2015-06-18 371 views
0

我是Qt開發的新品牌,並試圖用切換按鈕製作一個簡單的「Hello,World」。我有這樣的事情:爲什麼我的標籤在點擊按鈕時消失?

enter image description here

與相應的代碼:「你好,世界」

void MainWindow::on_pushButton_toggled(bool checked) 
{ 
    if(checked) { 
     ui->label->setText("Hello, World!"); 
    } else { 
     ui->label->setText(""); 
    } 
} 

我的目標是標籤的文本無論是從空白的改變或者按一下按鈕,反之亦然。

目前該標籤只保留空白。之前,默認文本是「TextLabel」,在按下按鈕時,它將從「TextLabel」更改爲空白,這幾乎是正確的。

我已經嘗試了不同的選項,如on_pushButton_clicked,但無濟於事。

我知道解決方案很簡單 - 任何人都可以指出我的方向嗎?

回答

0

爲什麼你不這樣做?

void MainWindow::on_pushButton_toggled(bool checked) 
{ 
    ui->label->setText(ui->label->text().isEmpty() ? "Hello, World!" : ""); 
} 
+0

1.檢查變爲未使用。 2.它仍然不起作用。 – erip

+0

你確定這個方法被調用嗎?添加一個斷點或使用qDebug來驗證。 –

+0

@erip然後使用['clicked'](http://doc.qt.io/qt-5/qabstractbutton.html#clicked)信號,這樣你就不會有一個未使用的'checked'變量。此外,「切換」信號用於可檢查按鈕。您無法切換不可檢查的按鈕。你有沒有設置你的按鈕是可檢查的? – thuga

0

你需要如下聲明你的回調方法:

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT   
    bool checked; 
    QPushButton *my_button; 
    private slots: 
     void handleButton();  
}; 

然後在你的Constructor你需要如下連接Signal and Slot

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) 
{ 
    checked = 0; 
    connect(my_button, SIGNAL (released()), this, SLOT (on_pushButton_toggled())); 
} 

你的回調方法會像這個。您可以在此方法中切換您的國旗,因爲您每次點擊這個號碼時都會調用SLOT

void MainWindow::on_pushButton_toggled() 
{ 
    checked = ~checked; 
    if(checked) { 
     ui->label->setText("Hello, World!"); 
    } else { 
     ui->label->setText(""); 
    } 
} 

我希望這能爲你解決。

相關問題