C++ Qt错误地将小部件放在彼此的顶部
在Qt 4.8.5 32位和VS2010中,我试图创建一个窗口,如QtDesigner的屏幕截图所示: 当我运行应用程序时,这些小部件彼此重叠: 在控制台中,我看到以下内容: 有人知道为什么会这样吗? 这是我的密码: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);
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,它就工作了!