你将如何从 Qt 中另一个文件中的函数访问小部件?

Posted

技术标签:

【中文标题】你将如何从 Qt 中另一个文件中的函数访问小部件?【英文标题】:How would you access a widget from a function in another file in Qt? 【发布时间】:2011-06-15 00:02:49 【问题描述】:

我正在开发一个项目,我一开始是在没有 GUI 的情况下制作它,但现在我正在将它移植到 Qt,但我遇到了问题。

我在一个单独的文件中有我的“旧”实现,我尝试从中访问 MainWindow 小部件,以便输出到 QTextBrowser,但我无法这样做。

在 mainwindow.cpp 我有这个:

void MainWindow::addString(char* text)  
       
     std::string input = text;  
     ui->textBrowser->append(QString::fromStdString(input));  
     return;  
       

在 mainwindow.h 中:

class MainWindow : public QMainWindow  
     
     Q_OBJECT
     public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    private slots:
    void on_showWelcome_triggered();
    void on_showArithmetic_triggered();
    private:
    Ui::MainWindow *ui;
    public slots:
    void btnResolveClicked();
    void btnClearClicked();
    void hideAll();
    void addString(char* output);
    ;
    #endif // MAINWINDOW_H

在 simple_mode.cpp 中:

void test()  
     
     MainWindow *gui = new MainWindow;
     gui->addString("WORKS");
     MainWindow:: = gui;  
     

但是,这不会将“WORKS”附加到文本浏览器,这是我需要的,我认为它将它添加到与主窗口不同的另一个文本浏览器实例。

编辑: 我想做的是将一行文本直接从 simple_mode.cpp 附加到文本浏览器。 顺便说一句,simple_mode 是在没有任何 Qt 帮助的情况下编写的,这就是我使用 std 字符串的原因,目前 textbrowser 小部件充当虚拟终端输出屏幕,而不是像以前那样使用 printf,我想将行附加到 textbrowser .不过我已经找到了办法,我现在不需要这个了。

我需要帮助

【问题讨论】:

我总是愿意学习:MainWindow:: = gui; 是什么意思? 【参考方案1】:

真的很难说你想要实现什么,并且代码片段没有涵盖所有可能的错误区域(即MainWindow 构造函数的定义在哪里?)。此外,格式很糟糕 - 请使用标识和一致的支撑样式。

我的建议是在 MainWindow 实例上调用 show。除非你在MainWindow构造函数中不搞乱ui初始化,否则这个sn-p应该足够了。如果不是,请向我们提供缺失的代码。

void test()  

    MainWindow *gui = new MainWindow;
    gui->addString("WORKS");
    gui->show();

附带说明一下,您的 addString 方法应如下所示:

void MainWindow::addString(char* text)

    ui->textBrowser->append(QString::fromAscii(text));

return 语句是完全没有必要的,将text 分配给std::string 很可能会导致不必要的内存分配。这不像是世界末日,但对于 C++ 程序员来说,这是非常非常糟糕的做法。

【讨论】:

感谢您的回答,对我的格式感到抱歉,这是我的第一个问题,我不太了解编辑器。 我们都必须学习。您能否将我帖子中的问题和建议联系起来? @JGDames,你能看看我的问题here 指出我的错误吗?我相信我的问题与您的解决方案有关。谢谢!

以上是关于你将如何从 Qt 中另一个文件中的函数访问小部件?的主要内容,如果未能解决你的问题,请参考以下文章

从 Qt 中的文本文件填充表格小部件

Qt:访问在构造函数之外使用 GUI 小部件的类的函数

Qt4:从 QDockedWidget 的子类访问 QtDesigner 创建的小部件

Qt Designer 停靠小部件儿童访问

如何访问 symfony2 中另一个 html.twig 文件中的 javascript 函数?

Qt 如何从 QVector 中的数据创建位图并将其显示在小部件上?