无法从外部cpp文件访问Qt UI
Cannot Access the Qt UI from an external cpp file
我正试图使一个程序成为一个。在这个程序中,我想按下一个按钮,处理另一个cpp文件中的一些文本,并附加我的QTextEdit。作为一个测试,我基本上只是设置我的按钮来运行另一个文件中的函数,以及程序启动时的函数。当它启动时,它会正确地打印到文本编辑和我的控制台,但当我按下按钮时,它只打印到控制台,而不是我的文本编辑。对于将文本附加到TextEdit中并打印到控制台的函数,我将其设置为公共插槽,以便可以从其他文件访问它。
这是我的quiz.cpp
#include <iostream>
#include "quiz.h"
#include "ui_quiz.h"
#include "test.h"
Quiz::Quiz(QWidget *parent) : QMainWindow(parent), ui(new Ui::Quiz) {
ui->setupUi(this);
setText();
}
Quiz::~Quiz() {
delete ui;
}
void Quiz::on_actionQuit_triggered() {
QCoreApplication::quit();
}
void Quiz::on_pushButton_clicked() {
run();
}
void Quiz::setText() {
ui->console->append("Hello");
std::cout << "Hello world!" << std::endl;
}
这是它的标题:
#ifndef QUIZ_H
#define QUIZ_H
#include <QMainWindow>
namespace Ui {
class Quiz;
}
class Quiz : public QMainWindow
{
Q_OBJECT
public:
explicit Quiz(QWidget *parent = 0);
~Quiz();
public slots:
void setText();
private slots:
void on_actionQuit_triggered();
void on_pushButton_clicked();
private:
Ui::Quiz *ui;
};
#endif // QUIZ_H
这是我的测试。cpp:
#include "quiz.h"
#include "test.h"
#include "ui_quiz.h"
void run() {
Quiz* quiz = new Quiz();
quiz->setText();
}
及其标题:
#ifndef TEST_H
#define TEST_H
#endif // TEST_H
void run();
我做错了什么?为什么我不能访问ui,而函数的其余部分却在运行?
您只能从主线程访问UI。你可以使用信号槽来做这件事。把你的位置写在主页上。从二等舱发射信号。连接构造函数main中的信号槽。
第二类.h文件:
void updateUI(QString str);
第二类.cpp文件:
emit updateUI("some text");
主类.h文件:
void updateUI(QString str);
主类.cpp文件(实现):
void Main::updateUI(QString str)
{
// change ui here
}
主类.cpp文件(在构造函数中):
connect(secondobj, &secondclass::updateUI, this, &mainclass::updateUI);
在要使用UI的cpp的头文件中,添加以下UI行。
##.h文件:
class A
{
Public:
Ui::MainWindow *ui;
}
##.cpp文件:
ui->label->setText(ui->button->text());
相关文章:
- Qt:从另一个窗口访问公共对象
- 如何访问QT中传递给程序的参数
- 从 QT Widget 对象实例访问 QT Widget 子成员
- 如何访问Qt::D isplayRole并在TableView中指定列
- 访问QT上的本地用户文件进行Web组件
- 使用C 访问QT / QML对象
- 在连接语句中访问Qt信号的"有效载荷"
- 访问QT小部件线程安全
- 无法从外部cpp文件访问Qt UI
- 如何访问Qt中父选项卡的属性
- QtWebkit javascript bridge,无法访问 Qt 对象方法
- 如何从任何类全局访问 QT 对话框
- 如何在c++项目中访问Qt的资源文件?
- 如何从非Qt函数访问Qt资源数据
- 从Webkit IFRAME(本地页面)访问Qt QWebView桥的技巧
- 使用QJSEngine从JavaScript访问Qt API
- 无法从 void 函数访问 Qt UI
- 访问Qt Designer创建的QWizardPage
- 如何访问Qt中另一个类的变量
- 无法使用 QtWebkit 通过 javascript 访问 Qt 对象方法