所以我想用C++學習Qt框架。我處於理解信號和插槽的過程中,但我很難創建一個定製插槽。因此,正如我跟着一些教程,我的節目結束了以下錯誤:QT C++ - 信號和插槽:「沒有這樣的插槽QLabel ...」即使我的班級中存在SLOT功能
QObject::connect: No such slot QLabel::updateMessage() in main.cpp:28
凡updateMessage()被聲明爲公有槽我測試裏面類
以下是
Test.h
0:從我的代碼的某些代碼段的main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Test t;
t.window->setWindowTitle("Testing Qt");
t.window->setLayout(t.layout);
t.window->show();
return app.exec();
}
Test::Test(void)
{
window = new QWidget;
lblMsg = new QLabel;
btnShow = new QPushButton("Show message");
connect(btnShow,SIGNAL(clicked()),lblMsg,SLOT(updateMessage()));
layout = new QGridLayout;
layout->addWidget(lblMsg);
layout->addWidget(btnShow);
char str1[] = "Hello, Qt World!";
setMessage(str1);
}
Test::~Test(void)
{
}
void Test::setMessage(char *tMsg)
{
memcpy(msg, tMsg, sizeof(msg));
}
char* Test::getMessage()
{
return msg;
}
void Test::updateMessage()
{
string strMsg(getMessage());
QString qstr = QString::fromStdString(strMsg);
lblMsg->setText(qstr);
delete msg;
}
HelloQtWorld.pro
######################################################################
# Automatically generated by qmake (3.0) Tue Nov 15 00:30:22 2016
######################################################################
TEMPLATE = app
TARGET = HelloQtWorld
INCLUDEPATH += .
# Input
HEADERS += stdafx.h Test.h
SOURCES += anotherClass.cpp \
main.cpp \
stdafx.cpp \
GeneratedFiles/qrc_helloqtworld.cpp
RESOURCES += helloqtworld.qrc
也可以有人試圖爲我解釋信號和槽是如何工作的?先謝謝你。 :)
你好。謝謝你的答案。它現在正在工作。也感謝您分享一些關於信號和插槽的參考資料。我很感激。 Thankk youuu。 :) –
@ZMars不客氣 – demonplus