使用QPushButton将文本添加到QTextEdit
Add text to QTextEdit using QPushButton
只需一个简单的程序,即可在单击按钮时将文本添加到文本编辑中。。。这里有什么问题吗??
#include<QPushButton>
#include<QApplication>
#include<QTextEdit>
#include<QWidget>
#include<QHBoxLayout>
#include<QLabel>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QHBoxLayout *layout=new QHBoxLayout;
QTextEdit *text = new QTextEdit();
QWidget window;
QPushButton *button;
layout->addWidget(text);
button = new QPushButton();
button->setText(QChar(i+48));
QObject::connect(button,SIGNAL(clicked()),text,SLOT(setPlainText("hai")));
layout->addWidget(button);
window.setLayout(layout);
window.resize(500, 500);
window.show();
return app.exec();
}
不能那样使用connect
。不能将连接的SIGNAL
中不存在的参数传递给SLOT
。
您需要将clicked()
信号连接到自己的插槽(没有参数),并自己调用setPlainText
函数(或发出具有QString
参数的新信号)。
另一种选择是使用QSignalMapper
,如信号和插槽高级使用部分所述。
我认为这是行不通的,不能在connect
语句中为插槽提供默认参数。SLOT
宏实际上只是将其参数转换为字符串,并在text
类的已注册插槽列表中搜索插槽名称。
您必须调用自己的插槽,该插槽不接受任何参数,并使用所需的文本手动调用setPlainText
。也许Qt在这个方向上有一些助手类,但您的解决方案不应该起作用。
顺便说一句,你真的尝试过这个并得到了一个错误吗,或者你只是在这里发布了它,而没有简单地尝试一下?
您的信号和插槽不兼容。Qt为此提供文档。
请尝试访问此页面。
在这里,它说,"信号和插槽机制是类型安全的:信号的签名必须与接收插槽的签名匹配。(事实上,插槽的签名可能比它接收的信号短,因为它可以忽略额外的参数。)由于签名是兼容的,编译器可以帮助我们检测类型不匹配。信号和插槽是松散耦合的:发出信号的类既不知道也不关心哪个插槽接收信号。"
信号槽机制可以与函数调用相比较(或归结为)。您正在一个发出信号的地方调用一个函数(插槽)。现在假设函数需要一些参数,但没有默认值。但是您正在尝试调用函数。会发生什么?。这就是代码中发生的情况。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何在QTextEdit中添加URL或IMAGE-URL
- 在 QTextEdit C++ 中为特定行添加下划线
- 如何将文本添加到QTextEdit的顶部
- Qt QTextEdit添加虚假行
- 配置QTextEdit的包装以添加缩进
- 将QTextEdit对象添加到QMainWindow中
- 使用QPushButton将文本添加到QTextEdit
- 将自定义HTML类特性添加到QTextEdit中的选定块