1

我是 C++ 和 QT 的新手,我正在使用 QT Creator,我创建了一个名为 nGui 的 QT Widget 项目,添加了一个名为 mydlg 的 QT-QT Designer 表单类,我一直在尝试在窗口中创建一个按钮,当您单击它会打开另一个窗口,而原始窗口会继续显示。这是我的代码,但它总是显示错误:'my2'没有在这个范围内声明。我在widget.h中声明了'my2',我在mydlg.cpp中包含了widget.h文件,我不知道哪里错了,有人可以帮我吗?太感谢了!

我的dlg.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();

}

小部件.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

主文件

#include <QtGui/QApplication>

#include "widget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}
4

2 回答 2

0

my2Widget类中声明,但您试图在myDlg类的成员函数中访问它。

于 2013-02-22T06:04:35.107 回答
0

尝试替换my2.show()show() 当您在myDlg类中编写时,您正在编写可以从该类(包括my2)实例化的每个对象的行为。

my2然后在类中引用是没有意义的MyDlg,因为使用你的类的其他人可以用它来实例化另一个名为(例如)的对象my3。您要做的是告诉编译器何时在_pushButton_clicked()类对象上调用 on 并在同一对象上MyDlg调用函数。show()您可以通过编写this->show()或简单地做到这一点show()

于 2016-01-17T20:23:23.600 回答