0
我想將三個按鈕的插槽分配給一個信號。將三個插槽分配給一個信號
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QSignalMapper *signalmapper;
Ui::MainWindow *ui;
void test(int);
signals:
void clickmee(int);
public slots:
void setclick1(int);
void setclick2(int);
void setclick3(int);
};
我爲此在構造函數:
signalmapper = new QSignalMapper(this);
signalmapper->setMapping(ui->pushButton, 10);
signalmapper->setMapping(ui->pushButton1, 10);
signalmapper->setMapping(ui->pushButton1, 10);
connect(signalmapper, SIGNAL(mapped(int)),this,SLOT(clickmee(int)));
但是當我在運行程序中寫道:
的QObject ::連接:沒有這樣的插槽的MainWindow :: clickmee(INT)在.. \ Qsignal2 \ mainwindow.cpp:11 QObject :: connect :(接收器名稱:'MainWindow')
如何將插槽分配給信號?我怎樣才能發送參數到一個插槽?
編輯: 我想這樣做:
void setclick1(int x)
{
if(x== 10)
{
// ....
}
else
{
// ...
}
}
,但此功能不點火。我怎樣才能做到這一點?
看到我的編輯請。 – 2013-04-23 19:44:11
如果setclick1沒有連接到信號,它將不會觸發: connect(signalmapper,SIGNAL(mapped(int)),this,SLOT(setclick1(int))); 和其他插槽 – andrjas 2013-04-23 19:47:22
相同,請查看文檔:http://qt-project.org/doc/qt-4.8/qsignalmapper.html 您可能還需要將button.clicked信號與signalmapper連接起來。 map():connect(ui-> pushButton,SIGNAL(clicked()),signalmapper,SLOT(map())); – andrjas 2013-04-23 19:51:39