【发布时间】:2014-06-17 07:15:06
【问题描述】:
我有一个非常具体的问题,所以我会尽量说清楚。
我有一个包含QTableWidget 的QTabWidget,我的QTableWidget 的每一行都是通过读取文件动态创建的。
如您所见,当我创建一行时,我在末尾添加了一个qCheckBox。我现在的目标是,当我点击qCheckBox 时,将此行发送到QtableTab 的最后一个选项卡中的QTableWidget(并在我取消选中qCheckBox 时删除此行)。
所以每次我动态创建一条线时,我都会尝试与我的qCheckBox 关联一个信号:
QObject::connect(pCheckBox, SIGNAL(clicked()), this, SLOT(cliqueCheckBox(monTab,ligne, pCheckBox)));
但它不起作用,我得到了错误:
QObject::connect: No such slot supervision::cliqueCheckBox(monTab,ligne, pCheckBox)
但是这个槽是存在的,我在我的头文件和我的 cpp 中声明它是这样的:
void supervision::cliqueCheckBox(QTableWidget *monTab, int ligne, QCheckBox *pCheckBox)
我解决这个问题的方法好吗?如果是如何正确地将信号关联到一个槽,如果不是,如何进行?
谢谢。
[编辑]:这是我创建 qCheckBox 并动态关联它的函数的代码:
void supervision::ajouterCheckBox(QTableWidget *monTab, int ligne){
// Creation de la check box
QWidget *pWidget = new QWidget(); //Creation du widget contenant la checkbox
QCheckBox *pCheckBox = new QCheckBox(); // Creation de la checkbox
QHBoxLayout *pLayout = new QHBoxLayout(pWidget); // Layout pour centrer ma checkbox
pLayout->addWidget(pCheckBox); // Ajout de la check box au layout
pLayout->setAlignment(Qt::AlignCenter); //Alignement
pLayout->setContentsMargins(0,0,0,0);//Supression des bordure
pWidget->setLayout(pLayout);//Mise en place du layout dans le widget
monTab->setCellWidget(ligne,5,pWidget);//Mise en place du widget contenant la checkbox dans ça cellule
//Mise en place de la connection
QObject::connect(pCheckBox, SIGNAL(clicked()), this, SLOT(cliqueCheckBox(monTab,ligne, pCheckBox)));
}
【问题讨论】:
-
什么是
supervision?命名空间还是类? -
监督是一个类。
-
当你连接插槽时,你能确认你在这个类的成员函数中吗?
-
我在编辑中添加了我执行此操作的功能
-
@EvansBelloeil,有几种解决方案。但是连接的信号和槽的签名必须是合适的。 JBL 已经回答了。
标签: c++ qt signals slot qcheckbox