连接QPushButton和QComboBox

时间:2015-07-23 11:48:59

标签: qt qcombobox qpushbutton

如何连接QPushButtonQComboBox

我创建了一个接受2个参数的SLOT,一个指向QComboBox的指针和所选项目的索引:

void modificaExp::eliminaExp(QComboBox *combo,int value)
{
   ......
    combo->removeItem(value);
   ....
}

widgest在那里:

QComboBox* combo=new QComboBox();
combo->addItem("ciao1");
combo->addItem("ciao44");
combo->addItem("ciao222");
combo->addItem("ciao555");

QPushButton* delButton=new QPushButton();
delButton->setText("delete");

   connect(delButton, SIGNAL(clicked()), this, SLOT( eliminaExp(combo,combo->currentIndex() )));

所以,当我点击delButton时,元素就会停留在那里。我认为connect命令存在问题,特别是我认为不会调用slot。

2 个答案:

答案 0 :(得分:1)

你确定你需要这个带有两个参数的插槽吗?

另一种简单的方法:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    setupUi(this);

    connect(deleteButton, SIGNAL(clicked(bool)), this, SLOT(deleteSlot()));

}

void MainWindow::deleteSlot()
{
    comboBox->removeItem(comboBox->currentIndex());
}

答案 1 :(得分:0)

  1. 广告位应具有相同类型且参数数量等于或少于信号

  2. 在标头中声明QComboBox和QPushButton对象 modificaexp.h

     private:
     QComboBox* combo;
     QPushButton* delButton;
    
  3. modificaexp.cpp

    combo=new QComboBox();
    combo->addItem("ciao1");
    combo->addItem("ciao44");
    combo->addItem("ciao222");
    combo->addItem("ciao555");
    
    delButton=new QPushButton();
    delButton->setText("delete");
    
    connect(delButton, SIGNAL(clicked()), this, SLOT( eliminaExp()));
    
  4. 修改广告位

     void modificaExp::eliminaExp()
     {           
        combo->removeItem(combo->currentIndex());        
     }        
    
  5. 请参阅Qt信号槽documentation