如何在C++和QT中连接信号和时隙,并允许变量传递到被调用的槽
我在Qt中创建了一个按钮,以便能够完成一个操作 该类在my browser.h文件中定义如下:如何在C++和QT中连接信号和时隙,并允许变量传递到被调用的槽,c++,qt,C++,Qt,我在Qt中创建了一个按钮,以便能够完成一个操作 该类在my browser.h文件中定义如下: class MyButtonGroup: public QButtonGroup { Q_OBJECT public: explicit MyButtonGroup(USBDevice dev, QWidget* parent = 0); ~ MyButtonGroup(){}; USBDevice MyDevice; publ
class MyButtonGroup: public QButtonGroup
{
Q_OBJECT
public:
explicit MyButtonGroup(USBDevice dev, QWidget* parent = 0);
~ MyButtonGroup(){};
USBDevice MyDevice;
public slots:
//Slot that is called when one of buttons in QButtonGroup is clicked
void buttonClick(QAbstractButton* button);
private:
};
MyButtonGroup::MyButtonGroup(USBDevice dev, QWidget *parent)
{
this->setParent(parent);
this->MyDevice = dev;
connect(this , SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(buttonClick(QAbstractButton*)));
}
在my browser.cpp中,我定义了MyButtonGroup Click,如下所示:
class MyButtonGroup: public QButtonGroup
{
Q_OBJECT
public:
explicit MyButtonGroup(USBDevice dev, QWidget* parent = 0);
~ MyButtonGroup(){};
USBDevice MyDevice;
public slots:
//Slot that is called when one of buttons in QButtonGroup is clicked
void buttonClick(QAbstractButton* button);
private:
};
MyButtonGroup::MyButtonGroup(USBDevice dev, QWidget *parent)
{
this->setParent(parent);
this->MyDevice = dev;
connect(this , SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(buttonClick(QAbstractButton*)));
}
然后单击按钮:
void MyButtonGroup::buttonClick(QAbstractButton *button)
{
if (button->text() == "Create Folder") {
this->MyDevice.CreateNewFolder(this->MyDevice.device_id, "toto", 0, this->MyDevice.device_id->storage->id);
}
}
该类设置为主浏览器小部件应用程序:
....
QPushButton* CreateFolderButton = new QPushButton("Create Folder", centralWidget);
CreateFolderButton->setFixedSize(100,20);
QVBoxLayout* Layout = new QVBoxLayout(centralWidget);
Layout->addWidget(CreateFolderButton);
....
MyButtonGroup* group = new MyButtonGroup(MyDevice, centralWidget);
group->addButton(CreateFolderButton);
....
<>这是我第一次玩QT,而且接近C++。p>
问题是,在定义MyButtonGroup::MyButtonGroup时,我提供了dev作为参数,因为我在完成操作buttonClick时需要dev数据
我认为当我在连接时,当api按钮单击调用this->MyDevice时,我用来传递dev的方式是不正确的,它是空的,会使应用程序崩溃
如何确保可以检索
MyButtonGroup::MyButtonGroup(USBDevice dev, QWidget *parent)
可以在中访问
MyButtonGroup::buttonClick
谢谢您的帮助。有什么问题吗?对不起,字段错了。我更改了描述我的设备如何为空?从我看到的情况来看,它不是指针,因为您正在访问设备id。您确定不是USBDevice::CreateNewFolder成员函数崩溃吗?它崩溃是因为MyDevice字段不正确。我不确定的是如何确保MyButtongGroup::MyButtongGroup中的此->Mydevice=dev可用于此->Mydevice.CreateNewFolderthis->Mydevice.device\u id在MyButtongGroup::buttonClickDid中检查开发是否包含正确的数据?