Я хочу подключить сигнал нажатия некоторых абстрактных кнопок к одному и тому же слоту. Дело в том, что он работает только на одной абстрактной кнопке, при нажатии на другие ничего не происходит. Любые идеи о том, что не работает?
Я уже проверил, что соединение между сигналом и слотом установлено правильно.
Я также пытался подключать только одну кнопку за раз кПосмотрите, была ли проблема в подключении разных кнопок к одному и тому же слоту, но дело в том, что он работает только с определенной кнопкой (backroungLbl
).
connect(ui.backgroundLbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam1mode1Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam1mode2Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam2mode2Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam1mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam2mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam3mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam4mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
void CIhm::backgroundClicked() {
printf("background\n");
if(ui.timePb->isVisible()){
hideTimeBar();
} else {
showTimeBar();
}
}
//Header
class CIhm : public QWidget {
Q_OBJECT
private:
class CCamWindow {
public:
QAbstractButton* window;
QAbstractButton* name;
CCamWindow(){
window = NULL;
name = NULL;
}
CCamWindow(QAbstractButton* w, QAbstractButton* i = NULL){
window = w;
name = i;
}
};
public:
CIhm();
~CIhm();
private:
std::map<int, std::vector<QX11EmbedContainer*> > m_ContainerMap;
std::map<QX11EmbedContainer*, CCamWindow> m_ControlMap;
private:
void ConnectSlots();
void CreateContainers();
public slots:
void backgroundClicked();
};
#include "ihm.h"
CIhm::CIhm (){
ConnectSlots();
CreateContainers();
ui.cam1mode4Lbl->hide();
ui.cam2mode4Lbl->hide();
ui.cam3mode4Lbl->hide();
ui.cam4mode4Lbl->hide();
ui.cam1mode4nameLbl->hide();
ui.cam2mode4nameLbl->hide();
ui.cam3mode4nameLbl->hide();
ui.cam4mode4nameLbl->hide();
ui.cam1mode1Lbl->hide();
ui.cam1mode1nameLbl->hide();
}
void CIhm::ConnectSlots(){
connect(ui.backgroundLbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam1mode1Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam1mode2Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam2mode2Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam1mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam2mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
connect(ui.cam3mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundCLicked()));
connect(ui.cam4mode4Lbl, SIGNAL(clicked()), this, SLOT(backgroundClicked()));
}
void CIhm::CreateContainers(){
std::vector<QX11EmbedContainer*> singleContainer;
singleContainer.push_back(new QX11EmbedContainer(this));
singleContainer[0]->setGeometry(ui.cam1mode1Lbl->geometry().x(), ui.cam1mode1Lbl->geometry().y(), ui.cam1mode1Lbl->geometry().width()-1, ui.cam1mode1Lbl->geometry().height()-1);
m_ControlMap[singleContainer[0]] = CCamWindow(ui.cam1mode1Lbl, ui.cam1mode1nameLbl);
m_ContainerMap[1] = singleContainer;
std::vector<QX11EmbedContainer*> doubleContainer;
doubleContainer.push_back(new QX11EmbedContainer(this));
doubleContainer[0]->setGeometry(ui.cam1mode2Lbl->geometry().x(), ui.cam1mode2Lbl->geometry().y(), ui.cam1mode2Lbl->geometry().width()-1, ui.cam1mode2Lbl->geometry().height()-1);
m_ControlMap[doubleContainer[0]] = CCamWindow(ui.cam1mode2Lbl, ui.cam1mode2nameLbl);
doubleContainer.push_back(new QX11EmbedContainer(this));
doubleContainer[1]->setGeometry(ui.cam2mode2Lbl->geometry().x(), ui.cam2mode2Lbl->geometry().y(), ui.cam2mode2Lbl->geometry().width()-1, ui.cam2mode2Lbl->geometry().height()-1);
m_ControlMap[doubleContainer[1]] = CCamWindow(ui.cam2mode2Lbl, ui.cam2mode2nameLbl);
m_ContainerMap[2] = doubleContainer;
std::vector<QX11EmbedContainer*> quadContainer;
quadContainer.push_back(new QX11EmbedContainer(this));
quadContainer[0]->setGeometry(ui.cam1mode4Lbl->geometry().x(), ui.cam1mode4Lbl->geometry().y(), ui.cam1mode4Lbl->geometry().width()-1, ui.cam1mode4Lbl->geometry().height()-1);
m_ControlMap[quadContainer[0]] = CCamWindow(ui.cam1mode4Lbl, ui.cam1mode4nameLbl);
quadContainer.push_back(new QX11EmbedContainer(this));
quadContainer[1]->setGeometry(ui.cam2mode4Lbl->geometry().x(), ui.cam2mode4Lbl->geometry().y(), ui.cam2mode4Lbl->geometry().width()-1, ui.cam2mode4Lbl->geometry().height()-1);
m_ControlMap[quadContainer[1]] = CCamWindow(ui.cam2mode4Lbl, ui.cam2mode4nameLbl);
quadContainer.push_back(new QX11EmbedContainer(this));
quadContainer[2]->setGeometry(ui.cam3mode4Lbl->geometry().x(), ui.cam3mode4Lbl->geometry().y(), ui.cam3mode4Lbl->geometry().width()-1, ui.cam3mode4Lbl->geometry().height()-1);
m_ControlMap[quadContainer[2]] = CCamWindow(ui.cam3mode4Lbl, ui.cam3mode4nameLbl);
quadContainer.push_back(new QX11EmbedContainer(this));
quadContainer[3]->setGeometry(ui.cam4mode4Lbl->geometry().x(), ui.cam4mode4Lbl->geometry().y(), ui.cam4mode4Lbl->geometry().width()-1, ui.cam4mode4Lbl->geometry().height()-1);
m_ControlMap[quadContainer[3]] = CCamWindow(ui.cam4mode4Lbl, ui.cam4mode4nameLbl);
m_ContainerMap[4] = quadContainer;
}
void CIhm::backgroundClicked() {
printf("background\n");
if(ui.timePb->isVisible()){
hideTimeBar();
} else {
showTimeBar();
}
}