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

C++ 如何从Qt中另一个文件中的函数访问小部件?,c++,qt,qt-creator,qwidget,C++,Qt,Qt Creator,Qwidget,我正在开发一个项目,我开始在没有GUI的情况下开发它,但现在我将它移植到Qt,但我遇到了一个问题 我在一个单独的文件中有我的“旧”实现,我试图从它访问MainWindow小部件,以便输出到QTextBrowser,但我无法这样做 在mainwindow.cpp中,我有以下内容: void MainWindow::addString(char* text) { std::string input = text; ui->textBrowser->

我正在开发一个项目,我开始在没有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”附加到textbrowser,这正是我所需要的,我认为它将它添加到另一个与主窗口不同的文本浏览器实例中

编辑: 我想做的是直接从simple_mode.cpp向textbrowser添加一行文本。 顺便说一句,simple_模式是在没有任何Qt辅助的情况下编写的,这就是为什么我使用std字符串,目前textbrowser小部件充当虚拟终端输出屏幕,而不是像以前那样使用printf,我想将行附加到textbrowser。然而我已经找到了我的出路,我现在不需要这个


我需要帮助

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

我的建议是在
main窗口
实例上调用
show
。除非您在
MainWindow
constructor中没有搞砸
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语句完全没有必要,将
text
赋值给
std::string
可能会导致不必要的内存分配。这不是世界末日,但对于C++程序员来说,这真的是非常糟糕的练习。

谢谢你的回答,抱歉我的格式化,这是我的第一个问题,我不太理解编辑。我们都必须学习。你能谈谈我帖子中的问题和建议吗?@JGDames,你能看看我的问题,指出我的错误吗?我相信我的问题与你的解决方案有关。谢谢我总是愿意学习:什么是
MainWindow::=gui平均值?