gpt4 book ai didi

c++ - 从 QLineEdit 获取文本以在 QLineEdit returnpressed() 后附加到 QTextEdit

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:39 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的 Qt 程序,该程序在 QLineEdit 中获取文本,并在按下返回键时将其附加到 QTextEdit 对象中。

这是我的程序的代码:

#include <QApplication>
#include <QtGui>

#define WIDTH 640
#define HEIGHT 480

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

QTextEdit textArea;
textArea.setReadOnly(true);

QLineEdit lineEdit;

QPushButton quit("Quit");
QObject::connect(&quit, SIGNAL(clicked()), qApp, SLOT(quit()));

QHBoxLayout hLayout;
hLayout.addWidget(&lineEdit);
hLayout.addWidget(&quit);

QVBoxLayout vLayout;
vLayout.addWidget(&textArea);
vLayout.addLayout(&hLayout);

QWidget window;
window.setBaseSize(WIDTH, HEIGHT);
window.setLayout(&vLayout);
window.show();

//This is the line I can not get to work
QObject::connect(&lineEdit, SIGNAL(returnPressed()), &textArea, SLOT(append(lineEdit.text())));

return app.exec();

}

本质上,问题是将 QLineEdit returnPressed() SIGNAL 连接到 QTextEdit append() SLOT。我希望有人能指出我的代码有什么问题。

非常感谢您抽出宝贵时间。

最佳答案

当你运行你的程序时,你应该注意到控制台上有以下 Qt 错误输出..

Object::connect: No such slot QTextEdit::append(lineEdit.text()) in ..

您需要在调用connect 时使用QTextEdit 变量名textArea 限定append 引用.

但这不会有太大帮助,因为您只能在调用 connect 时指定信号和插槽方法名称以及参数类型,因此您不能指定 lineEdit.text() 在那里。

因为 append() 槽需要一个 QString,理想情况下你会想要连接一个包含 QString 但没有的信号QLineEdit 的此类信号。

您几乎必须自己编写一个插槽,您可以连接到 returnPressed() 并从那里调用 textArea.append(lineEdit.text())。您需要继承某种类型的 QObject 来编写插槽,这通常意味着继承 QWidget 并将所有 UI 构建代码放入其构造函数中。

您可能还会注意到您的程序在关闭时崩溃了。由于 Qt 喜欢自行管理大多数 QObject 的销毁,通常最好使用 new 在堆上分配所有 QObject 实例。这在技术上并非一直都是必需的,但它更容易 :)

关于c++ - 从 QLineEdit 获取文本以在 QLineEdit returnpressed() 后附加到 QTextEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7523440/

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