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

| 我正在开发一个项目,我首先开始在没有GUI的情况下进行制作,但是现在我将其移植到Qt,但是我遇到了问题。 我在单独的文件中有\“ old \”实现,并且尝试从中访问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到textbrowser追加一行文本。 顺便说一句,simple_mode是在没有任何Qt辅助的情况下编写的,这就是为什么我使用std字符串,并且当前textbrowser小部件充当虚拟终端输出屏幕的原因,而不是像以前那样使用printf,我想添加行到文本浏览器。但是,我已经找到了解决方法,现在不需要了。 我需要帮助     
已邀请:
        真的很难说出您想要实现什么,并且代码段并未涵盖所有可能的错误区域(即
MainWindow
构造函数的定义在哪里?)。此外,格式也很糟糕-请使用标识和一致的支撑样式。 我的建议是简单地在
MainWindow
实例上调用
show
。除非您不搞乱
MainWindow
构造函数中的
ui
初始化,否则此代码段就足够了。如果不是,请向我们提供缺少的代码段。
void test()  
{
    MainWindow *gui = new MainWindow;
    gui->addString(\"WORKS\");
    gui->show();
}
附带说明一下,您的
addString
方法应如下所示:
void MainWindow::addString(char* text)
{
    ui->textBrowser->append(QString::fromAscii(text));
}
完全不需要使用return语句,并且将ѭ11分配给ѭ12可能会导致不必要的内存分配。这不是世界末日,但是对于C ++程序员来说,这确实是非常糟糕的做法。     

要回复问题请先登录注册