我是C ++和QT的新手,我正在使用QT Creator,我创建了一个名为nGui的QT Widget项目,添加了一个名为mydlg的QT-QT Designer表单类,我一直在尝试创建一个按钮窗口,当您单击它时打开另一个窗口,而原始窗口一直显示。这是我的代码,但它总是显示错误:'my2'未在此范围内声明。我已经在widget.h中声明了'my2',并且我在mydlg.cpp中包含了widget.h文件,我不知道哪里出错了,有人可以帮帮我吗?非常感谢你!
mydlg.cpp
#include "mydlg.h"
#include "ui_mydlg.h"
myDlg::myDlg(QWidget *parent) :
QDialog(parent),
ui(new Ui::myDlg)
{
ui->setupUi(this);
}
myDlg::~myDlg()
{
delete ui;
}
void myDlg::on_pushButton_clicked()
{
my2.show();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include"mydlg.h"
namespace Ui
{
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
myDlg my2;
private slots:
void on_pushButton_clicked();
};
#endif // WIDGET_H
的main.cpp
#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
答案 0 :(得分:0)
my2
在Widget
类中声明,但您尝试在myDlg
类的成员函数中访问它。
答案 1 :(得分:0)
尝试将my2.show()
替换为show()
当您在myDlg
类中编写时,您正在编写可以从该类实例化的每个对象的行为(包括my2
)。
然后在my2
类中引用MyDlg
是没有意义的,因为使用您的类的其他人可以改为使用它来实例化另一个名为(例如)my3
的对象。你想要做的是告诉编译器何时在类_pushButton_clicked()
的对象上调用MyDlg
时,在同一个对象上调用show()
函数。您可以通过撰写this->show()
或简单show()
来完成此操作。