我在Qt中创建了一个按钮,可以完成一个动作。
该类在我的browser.h文件中定义如下:
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:
};
在我的browser.cpp中,我已经将MyButtonGroupClick定义如下:
MyButtonGroup::MyButtonGroup(USBDevice dev, QWidget *parent)
{
this->setParent(parent);
this->MyDevice = dev;
connect(this , SIGNAL(buttonClicked(QAbstractButton*)),this,SLOT(buttonClick(QAbstractButton*)));
}
和buttonClick:
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 ++差不多。
问题在于,在定义MyButtonGroup :: MyButtonGroup时,我提供“dev”作为参数,因为当我完成动作“buttonClick”时我需要“dev”数据
我认为当我进行连接时,我曾经通过这种方式传递“dev”的方式是不正确的,当api buttonClick调用时,this-> MyDevice为null并且使应用程序崩溃。
如何确保我可以检索
中的参数MyButtonGroup::MyButtonGroup(USBDevice dev, QWidget *parent)
可以在
中访问MyButtonGroup::buttonClick
感谢您的帮助。