2016-02-01 8 views
0

В Qt 4.8.5 32-битном и VS2010, я пытаюсь создать окно, как показано на скриншоте из QtDesigner:Qt неправильно лежит виджеты поверх друг друга

enter image description here

Когда я запустить приложение, виджеты трахаться вниз друг на друга: enter image description here

В консоли, я вижу это: enter image description here

кто-нибудь есть Почему это происходит? Вот мой код:

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

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

private: 
    Ui::AView* ui; 
} 
+0

могли бы вы поделиться своими весь проект где-то? –

ответ

0

Из скриншота QtDesigner, я вижу, что ваш пользовательский интерфейс для QWidget, но вы подаете его в QMainWindow. Это вызывает проблему, так как обработка главного окна отличается от других виджетов.

Я не знаю, как изменить базовый класс для пользовательского интерфейса. Возможно, лучший способ - создать новый файл, выбрать шаблон mainwindow и скопировать/вставить содержимое из старого файла.

Другим вариантом было бы иметь QWidget, настроить его с пользовательским интерфейсом, а также добавить его в качестве центрального виджета главного окна:

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; 
} 
+0

что сделал! Спасибо, царь_нак, я наблюдал за этим. То, что я сделал, это просто создать новый ui с использованием шаблона MainWindow, выбрать все, начиная с предыдущего, скопировать и вставить его внутри, восстановить ui.h, и это сработало! –

0

Попробуйте это:

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

public: 
    MainWindow(){ 
     setupUi(this); 
    } 
    ~MainWindow(); 
} 
Смежные вопросы