尝试创建简单的应用程序,按下按钮将myLabel设置为可见
void MainWindow::on_pushButton_clicked()
{
myLabel.setVisible(false);
}
但编译器声称'myLabel' was not declared in this scope
为什么以及如何解决这个问题?
答案 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);
}