gpt4 book ai didi

c++ - 无法从外部 cpp 文件访问 Qt UI

转载 作者:太空宇宙 更新时间:2023-11-04 13:16:24 25 4
gpt4 key购买 nike

我试图在该程序中创建一个程序我想按下一个按钮来处理另一个 cpp 文件中的一些文本并附加我的 QTextEdit。我基本上作为测试只是设置我的按钮来运行另一个文件中的函数以及程序启动时的函数。当它启动时,它会正确地打印到文本编辑器和我的控制台,但是当我按下我的按钮时,它只打印到控制台而不是我的文本编辑器。对于在我的 TextEdit 中附加文本并打印到控制台的功能,我将其设为公共(public)插槽,以便我可以从我的其他文件访问它。

这是我的测验.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();
}

及其 header :

#ifndef TEST_H
#define TEST_H

#endif // TEST_H

void run();

我做错了什么?为什么我无法访问 ui,但其余功能仍在运行?

最佳答案

您只能从主线程访问 UI。你可以使用信号槽来做到这一点。在 main 中写下你的插槽。并从二等舱发出信号。在构造函数 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);

关于c++ - 无法从外部 cpp 文件访问 Qt UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096683/

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