gpt4 book ai didi

c++ - Qt信号槽visual studio : doesn't seem to be connected

转载 作者:行者123 更新时间:2023-11-28 01:51:41 25 4
gpt4 key购买 nike

我正在学习如何将 QT 与 Visual Studio 结合使用。目前,我正在使用 QT 5.8 和 vs 2017。我创建了一个新项目并使用 QT 设计器添加了一些单选按钮。现在,我想执行一些操作,例如“单击单选按钮时执行此操作”。这是我的代码:

绘图.cpp

#include "Draw.h"

#include "qpushbutton.h"
#include "qradiobutton.h"
#include "qgroupbox.h"

Draw::Draw(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);

//Invisible elements
ui.frmAbsolut->setVisible(false);

//We create the connections to methods
connect(this->ui.myradiobutton1, SIGNAL(toggled(bool)), this, SLOT(on_rdbMethod_change(this->ui.myradiobutton1->isChecked, 0)));

}

void Draw::on_rdbMethod_change(bool value, int option)
{
//0: frmAbsolut
printf("%d \n", option);
if (value == true){
if (option == 0) {
this->ui.frmAbsolut->setVisible(true);
}
}
}

绘图.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_Draw.h"

class Draw: public QMainWindow
{
Q_OBJECT

public:
Draw(QWidget *parent = Q_NULLPTR);

private:
Ui::DrawClass ui;

protected slots:
void on_rdbMethod_change(bool, int);

};

如果我运行该程序,我不会收到任何错误,如果我检查 connect(...) 行,我会看到它已被调用,但是当我单击该单选按钮时,它不会调用我的方法。这有什么问题吗?

最佳答案

connect(this->ui.myradiobutton1, SIGNAL(clicked), this, SLOT(on_rdbMethod_change(this->ui.myradiobutton1->isChecked, 0)));

以上是不正确的——如果您查看程序的标准输出输出,您可能会看到 connect() 正在打印有关它的错误消息。

特别是,您在单击后没有包含括号,而且您的插槽方法参数必须与信号方法的参数相同,或者至少与信号方法的前 N ​​个参数相同.在这种情况下,由于信号 (clicked()) 没有参数,这意味着您的插槽方法也需要没有参数;因此您需要将 on_rdbMethod_change() 更改为不带参数,或者指定一个不同的插槽方法(也许可以实现该插槽方法来调用 on_rdbMethod_change(this->ui.myradiobutton1->isChecked, 0),如果那是你想要它做的)。此外,connect() 调用不能在其 SIGNAL/slot 参数列表中获取值,只能获取类型。

所以更正后的 connect() 调用看起来像这样:

connect(this->ui.myradiobutton1, SIGNAL(clicked()), this, SLOT(on_rdbMethod_change()));

关于c++ - Qt信号槽visual studio : doesn't seem to be connected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42814986/

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