我正在学习Qt 5,其中有一些来自web的示例代码,但我无法编译它。我有几个文件: 在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();
}
我想要做的是在窗口标题中有一个“*”,如果我更改了textEditor中的文本,那么我使用connect()函数。问题我无法正确编译,错误信息为
error: invalid use of void expression
connect(textEdit,&QTextEdit::textChanged,this,this->setWindowModified(true));
感谢任何帮助!
答案 0 :(得分:1)
更改
private void sets(ArrayList<Integer> save, int answer) {
String s = ", ";
String t = "";
for (int i = 0; i < 6; i += 1) {
t = t + String.valueOf(save.get(i)) + s;
}
for(int n = place ;n<1 ;){
ArrayList<String> message = new ArrayList<String>();
message.add(t);
place=place+1;
System.out.println(message);
return;
}
}
到
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()
和SIGNAL
)或指向它的指针,使用函数指针样式,这样就无法放置要在SLOT
调用中执行的代码。而是定义一个额外的插槽来实现所需的行为,如图所示。