gpt4 book ai didi

c++ - 无法输出到 QTextEdit

转载 作者:行者123 更新时间:2023-11-30 04:50:07 28 4
gpt4 key购买 nike

我的程序应该:

  1. 从 QLineEdits 收集一些输入;
  2. 将其转换为QString;
  3. 将其添加到一些常量的QString中;
  4. 单击按钮时在 QTextEdit 中输出全部内容。

下面是程序的简化模型。可以编译;我没有错误;但是,它不能满足我的需要。它只是无法输出,我真的不知道为什么。我一直在努力让它不显示任何错误,现在我的想法已经用完了。有人可以帮我吗?

#include <QtGui>
#include <QtCore>

class MyObject : public QObject

{
Q_OBJECT

public:
QTextEdit text;
QString c;

public slots:
void onClicked() {
text.setText(c);
}
};

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QWidget mw;
mw.setWindowTitle("Main Window");
mw.resize(400, 400);
mw.show();

QLabel label ("Enter something:", &mw);
label.setAlignment(Qt::AlignHCenter);
label.show();

QLineEdit line (&mw);
line.show();

QString a = line.text();

QString b = "This line is to be added";

QString c = a+b;

QTextEdit text (&mw);
text.show();

QPushButton btn ("Convert", &mw);

MyObject obj;

QObject::connect(
&btn,
SIGNAL(clicked()),
&obj,
SLOT(onClicked()));
btn.show();

QVBoxLayout layout_mw;

layout_mw.addWidget(&label);
layout_mw.addWidget(&line);
layout_mw.addWidget(&btn);
layout_mw.addWidget(&text);

mw.setLayout(&layout_mw);

return app.exec();

}

#include "sample.moc"

最佳答案

根据您提供的代码,您似乎不知道:

  • Qt是异步的,比如你得到的a的值是在窗口显示之前,它会有什么值?好吧,它将有一个空字符串,那么我应该在什么时候请求文本呢?就在按下按钮时调用的插槽中。

  • 具有相同名称的变量并不意味着它们是相同的,例如您有 2 个名称为 text 的 QTextEdit,它们是不同的对象。

因此,当您意识到对象(小部件)必须具有相同的范围才能相互交互时,所以我将创建一个继承自 QWidget 并将其他元素作为属性的类。

#include <QtGui>
#include <QtCore>

class Widget: public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent=nullptr):
QWidget(parent)
{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(&label);
layout->addWidget(&line);
layout->addWidget(&button);
layout->addWidget(&textedit);
label.setText("Enter something:");
label.setAlignment(Qt::AlignHCenter);
button.setText("Convert");
connect(&button, SIGNAL(clicked()), this, SLOT(onClicked()));
}
private slots:
void onClicked(){
QString a = line.text();
QString b = "This line is to be added";
QString c = a+b;
textedit.setText(c); // or textedit.append(c);
}
private:
QLabel label;
QLineEdit line;
QPushButton button;
QTextEdit textedit;
};

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Widget w;
w.show();
return app.exec();
}
#include "sample.moc"

关于c++ - 无法输出到 QTextEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113989/

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