我試圖做一個程序,使一些操作與聲音。我的問題是我有3個播放按鈕和3個標籤。我希望無論我點擊哪個Play按鈕,都會播放名稱位於按鈕附近的標籤中的聲音。 我有一個沒有任何參數的播放插槽。那麼,我怎樣才能分別連接到每個標籤的播放按鈕?實際上,我可以編寫3種不同的播放功能,但由於我還有其他一些功能,它會太長而令人困惑。另外,我需要3個播放按鈕,因爲我想同時播放3個聲音。qt如何知道按鈕被點擊?
1
A
回答
2
例如通過連接點擊從所有的按鈕信號到一個槽,然後使用的QObject ::發送者()找出它是哪個按鈕。
讓我們假設你的按鈕命名爲按鈕,pushButton_2和pushButton_3和標籤標籤,label_2分別label_3。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(play()));
connect(ui->pushButton_2, SIGNAL(clicked()), this, SLOT(play()));
connect(ui->pushButton_3, SIGNAL(clicked()), this, SLOT(play()));
}
void MainWindow::play()
{
QString piece;
QObject* button = QObject::sender();
if (button == ui->pushButton)
{
piece = ui->label->text();
}
else if (button == ui->pushButton_2)
{
piece = ui->label_2->text();
}
else
{
piece = ui->label_3->text();
}
qDebug() << "Starting to play:" << piece;
}
0
在現代的代碼,你應該使用的Qt 5的connect
語法和簡單地連接到一個仿函數,當你的行動是平凡的,像你這樣的:
// Interface
#include "ui_MainWindow.h"
class MainWindow : public QMainWindow {
Q_OBJECT
Ui::MainWindow ui; // not a pointer to make things easier
...
public:
explicit MainWindow(QWidget * parent = 0);
void play(const QString & piece);
};
// Implementation
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton_1, &QPushButton::clicked, [this]{
play("piece for button 1");
});
connect(ui.pushButton_2, &QPushButton::clicked, [this]{
play("piece for button 2");
});
connect(ui.pushButton_3, &QPushButton::clicked, [this]{
play("piece for button 3");
});
}
void MainWindow::play(const QString & piece) {
...
}
相關問題
- 1. 如何知道Flex DataGrid itemRenderer中的按鈕何時被點擊?
- 2. Android的 - 按鈕偵聽知道哪個按鈕被點擊
- 3. 如何知道按鈕被點擊了多少次?
- 4. 如何知道被點擊的按鈕ID是什麼 - android
- 5. 如何知道按鈕是否被點擊android
- 6. 如何知道哪個按鈕被點擊?
- 7. 如何知道被點擊的按鈕「第一」,」
- 8. 在WebView中,如何知道哪個按鈕被點擊?
- 9. CKEDITOR 3.0 - 如何知道哪些工具欄按鈕被點擊
- 10. 不知道如何處理刪除按鈕,當它被點擊
- 11. iOS如何知道html5按鈕是否被點擊加載UIWebView
- 12. Qt,PushButton,id屬性?任何方式知道哪個按鈕被點擊
- 13. 如何知道按鈕在form1中被點擊但是在form2中知道C#
- 14. 如何知道點擊或不點擊的按鈕
- 15. 如何點擊Qt WebEngine中的按鈕?
- 16. 有兩個提交按鈕,知道一個被點擊的
- 17. 知道當一個Facebook按鈕被點擊時,在jQuery的
- 18. 我怎麼知道哪個按鈕在Flash中被點擊
- 19. 知道哪個按鈕被點擊從以前的活動
- 20. 我怎麼知道哪個按鈕被點擊? Objective C
- 21. 我怎樣才能知道哪些提交按鈕被點擊
- 22. 如何知道單擊了UISwitch按鈕
- 23. Python QT如何可視化該按鈕被點擊
- 24. 按鈕被點擊
- 25. 使事件的多個按鈕,並知道被點擊了哪個按鈕
- 26. 如何知道何時點擊了UIKeyboard加入按鈕?
- 27. 如何知道何時點擊「共享鏈接」按鈕?
- 28. 我該如何讓其他課程知道按鈕被點擊(Android Studio)
- 29. ASP.NET引擎如何知道客戶端的哪個按鈕被點擊?
- 30. 如何知道是否完成按鈕被點擊操作模式
謝謝你非常好的主意。但是,我的播放功能是一個沒有爭論的插槽。那麼,我怎麼用我的播放功能來做這件事呢? –
編輯我的答案。 – talamaki
是的,這段代碼非常好,非常感謝你...... –