在MainWindow中使用Form控件

时间:2018-04-09 06:50:07

标签: c++ qt

尝试创建简单的应用程序,按下按钮将myLabel设置为可见

void MainWindow::on_pushButton_clicked()
{
 myLabel.setVisible(false);
}

但编译器声称'myLabel' was not declared in this scope

为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的标签未在函数on_pushButton_clicked范围内声明 通过这种方式,这位分析师声称“myLabel”是这样的。未在此范围内宣布。

要解决此问题,您需要将您的标签声明为全球会员。

H档

#include <QMainWindow>
#include <QLabel>
#include <QPushButton>

class MainWindow : public QMainWindow
{
   Q_OBJECT
   public:
       MainWindow(QWidget * poParent);

   private:

       // Declare label as global scope
       QLabel * m_poMyLabel;
       QPushButton * m_poMyButton;

   private slots:
       void on_pushButton_clicked();
}

在cpp:

 MainWindow::MainWindow(QWidget * poParent):QMainWindow(poParent)
 {
    QHBoxLayout * poLayout = new QHBoxLayout;
    QWidget * poCentralWidget = new QWidget(this);

    poCentralWidget->setLayout(poLayout);
    this->setCentralWidget(poCentralWidget);
    m_poMyButton = new QPushButton(this);
    m_poMyButton->setText("Hide label");
    m_poMyLabel = new QLabel(this);
    m_poMyLabel->setText("Hello");
    poLayout->addWidget(m_poMyButton);
    poLayout->addWidget(m_poMyLabel);

    connect(m_poMyButton, &QPushButton::clicked,
            this, &MainWindow::on_pushButton_clicked);

 }

 void MainWindow::on_pushButton_clicked()
 {// Now it should compile and set label visible false
   m_poMyLabel->setVisible(false);
 }