我让班级继承自QLabel
。这个类也有公共插槽,应该更改标签标题。我使用按钮的clicked()
SIGNAL “呼叫”此 SLOT 。
所以当我按下按钮时没有任何反应。
#include <QApplication>
#include <QLabel>
#include <QPushButton>
class Label : public QLabel
{
public:
Label(QString a) : QLabel(a){}
public slots:
void change()
{
this->setNum(2);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton* button = new QPushButton("Button");
Label* lbl = new Label("Label");
button->show();
lbl->show();
QObject::connect(button, SIGNAL(clicked(bool)), lbl, SLOT(change()));
return a.exec();
}
如何从插槽中更改字幕?
答案 0 :(得分:2)
为了识别信号和插槽,类必须使用私有部分中的Q_OBJECT
宏。
要做的另一件事是包含if(x === 'Red dragon')
{
displayImage('RedDragon.png');
}
,有关此点的更多信息,请阅读this。
"main.moc"
在进行这些更改结束时,您必须执行以下操作:
答案 1 :(得分:0)
尝试从您的connect调用获取返回值,检查它是true还是false。 将Q_OBJECT宏添加到派生类的开头。 添加一些调试输出到您的插槽,如
qDebug()<<"This is my slot.";
也许这会有助于进一步发展。
祝你好运
答案 2 :(得分:0)
在
之后添加Q_OBJECT
class Label : public QLabel
{
然后你应该
将Label
类声明发送到.h
文件或在#include "main.moc"
函数声明后写main