gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:19:38 26 4
gpt4 key购买 nike

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

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

在 mainwindow.cpp 中我有这个:

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

在主窗口.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 构造函数的定义在哪里?)。此外,格式很糟糕 - 请使用标识和一致的支撑样式。

我的建议是简单地在 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语句是完全没有必要的,将text赋值给std::string很可能会造成不必要的内存分配。这不像是世界末日,但对于 C++ 程序员来说,这确实是一种非常非常糟糕的做法。

关于c++ - 在 Qt 中如何从另一个文件中的函数访问小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6351580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com