gpt4 book ai didi

c++ - QT 连接到按钮不起作用

转载 作者:行者123 更新时间:2023-11-28 05:10:42 25 4
gpt4 key购买 nike

我在 QT 中尝试了一个非常简单的程序。我用一个按钮在 QT 设计器中创建了一个对话框。我想要程序,当我点击按钮时,我会得到消息框。我调试了程序。但是,单击按钮后,信号不会对 OnClickedPushButton(bool) 起作用。哪里出错了?我的代码看起来像:

#include "qttest.h"
#include <QtGui>
#include <QMessageBox>

QTTest::QTTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(OnClickedPushButton()));

QPushButton *button = new QPushButton(this);
button->setText("ClcikMe");
button->setGeometry(QRect(QPoint(150, 50), QSize(85, 25)));
connect(button, SIGNAL(clicked()), this, SLOT(OnClickedPushButton()));
}

QTTest::~QTTest()
{

}

void QTTest::OnClickedPushButton()
{
QMessageBox::about(this, "Message", "You pushed button.");
}

我可以构建它,也可以启动它。但是,调试器在构造函数中给我写了以下消息:

QObject::connect: No such slot QTTest::OnClickedPushButton() in qttest.cpp:9
QObject::connect: (sender name: 'pushButton')
QObject::connect: (receiver name: 'QTTestClass')
QObject::connect: No such slot QTTest::OnClickedPushButton() in qttest.cpp:14
QObject::connect: (receiver name: 'QTTestClass')

我可以在窗口中看到两个按钮。按钮和按钮。但是,如果我点击按钮,由于插槽映射错误,消息将不会出现。你知道如何正确地做到这一点吗?

最佳答案

这里有两种可能:您要么将 OnClickedPushButton 声明为插槽,如 Avi 所述,要么使用 new signal/slot connection syntax .使用新语法,您可以像这样将信号连接到任意函数:

connect(pushButton, &QPushButton::clicked, this, &QTTest::OnClickedPushButton);

与旧语法相比,它的主要优势在于它在编译时进行检查,并且您不会像当前遇到的那样出现运行时错误。

关于c++ - QT 连接到按钮不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43567085/

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