为什么我的标签在按钮点击时消失了?

时间:2015-06-18 01:08:39

标签: qt label

我是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("");
    }
}

我的目标是将标签的文字从空白更改为" Hello,World!"或者点击按钮反之亦然。

目前,该标签仅为空白。早期的默认文本是" TextLabel",按下按钮,它将从" TextLabel"空白,这几乎是正确的。

我尝试了on_pushButton_clicked之类的不同选项,但无济于事。

我知道解决方案很简单 - 有人能指出我的方向吗?

2 个答案:

答案 0 :(得分:0)

你为什么不这样做?

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

答案 1 :(得分: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("");
    }
}

我希望这对你有用。