gpt4 book ai didi

c++ - QT 5 connect() 函数连接文本编辑器和主窗口

转载 作者:行者123 更新时间:2023-11-28 06:03:39 25 4
gpt4 key购买 nike

我正在使用网络上的一些示例代码学习 Qt 5,但我无法编译它。我有几个文件:在 mainwindow.h 中,我有我的代码:

class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QTextEdit *textEdit;
};

该类的实现在mainwindow.cpp中,如

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
setWindowTitle("TextPad [*]");
textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
connect(textEdit,&QTextEdit::textChanged,this,this->setWindowModified(true));
}

在我的 main.cpp 中,它非常简单,因为

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}

我想做的是在窗口标题中有一个“*”,如果我在文本编辑器中更改了文本,那么我使用 connect() 函数。我无法正确编译的问题,错误信息如下

error: invalid use of void expression
connect(textEdit,&QTextEdit::textChanged,this,this->setWindowModified(true));

感谢任何帮助!

最佳答案

改变

connect(textEdit,&QTextEdit::textChanged,this,this->setWindowModified(true));

connect(textEdit,SIGNAL(textChanged()),this,SLOT(myTextChanged()));
//or you can use alternate form
connect(textEdit,&QTextEdit::textChanged,this,myTextChanged);

定义一个插槽

void MainWindow::myTextChanged() {
setWindowModified(true);
}

connect() 只需要信号/槽的名称(使用单词 SIGNALSLOT)或指向它的指针,使用函数指针样式,因此您不能将要执行的代码放在 connect() 调用中。而是定义一个额外的插槽来实现所需的行为,如图所示。

关于c++ - QT 5 connect() 函数连接文本编辑器和主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32815005/

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