Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt错误地将小部件放在彼此的顶部_C++_Qt - Fatal编程技术网

C++ Qt错误地将小部件放在彼此的顶部

C++ Qt错误地将小部件放在彼此的顶部,c++,qt,C++,Qt,在Qt 4.8.5 32位和VS2010中,我试图创建一个窗口,如QtDesigner的屏幕截图所示: 当我运行应用程序时,这些小部件彼此重叠: 在控制台中,我看到以下内容: 有人知道为什么会这样吗? 这是我的密码: class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(){ ui = new Ui::AView(); ui->setupUi(this);

在Qt 4.8.5 32位和VS2010中,我试图创建一个窗口,如QtDesigner的屏幕截图所示:

当我运行应用程序时,这些小部件彼此重叠:

在控制台中,我看到以下内容:

有人知道为什么会这样吗? 这是我的密码:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(){
      ui = new Ui::AView();
      ui->setupUi(this);
    }
    ~MainWindow();
...

 private:
    Ui::AView* ui;
}

从QtDesigner的屏幕截图中,我看到您的UI用于
QWidget
,但您正在将其应用于
QMainWindow
。这会导致问题,因为主窗口的处理与其他窗口小部件不同

我不知道如何更改UI文件的基类。也许最好的方法是创建一个新文件,选择mainwindow模板,然后从旧文件复制/粘贴内容

另一个选项是使用
QWidget
,使用UI设置它,并将其添加为主窗口的中心小部件:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(){
      ui = new Ui::AView();
      QWidget *wgt = new QWidget;
      ui->setupUi(wgt);
      this->setCentralWidget(wgt);
    }
    ~MainWindow();
...

 private:
    Ui::AView* ui;
}
试试这个:

class MainWindow : public QMainWindow, public Ui::AView
{
    Q_OBJECT

public:
    MainWindow(){
      setupUi(this);
    }
    ~MainWindow();
}

你能在什么地方分享你的整个项目吗?就是这样!谢谢你king_nak我监督了这件事。我所做的只是使用MainWindow模板创建一个新的ui,从上一个模板中选择所有内容,复制并粘贴到其中,重新生成ui.h,它就工作了!