Как сделать так, чтобы экземпляр qtabwidget автоматически изменял размер при добавлении к нему дочерних вкладок? - PullRequest
0 голосов
/ 09 мая 2009

Я пытаюсь автоматически изменить размер QTabWidget, чтобы он подходил дочерней вкладке, когда дочерний элемент добавлен, но не смог этого сделать. Я создал форму с использованием Qt Designer и унаследовал ее, используя подход с единым наследованием, следующим образом.

class MyWidget : public QWidget
{
    Q_OBJECT

public:
    MyWidget(QWidget *parent = 0);
private:
    Ui::MyForm ui;
};

У меня есть QTabWidget, и я добавляю экземпляр объекта в мой QTabWidget с помощью addTab (). Когда я отображаю QTabWidget, я замечаю, что он не изменился, чтобы соответствовать экземпляру MyWidget. Что мне нужно сделать, чтобы обеспечить автоматическое изменение размера экземпляра QTabWidget?

Ответы [ 3 ]

2 голосов
/ 12 мая 2009

В конструкторе убедитесь, что вы добавили макет в свой виджет. Нажмите на фон виджета, чтобы при применении макета он применялся ко всему виджету. Хитрость в том, что базовый (родительский) виджет, на котором построена ваша форма, нуждается в макете, а не только в элементах формы.

Сетки, как правило, довольно просты в использовании. Но иногда другие лучше. Дизайнер может быть сложным в использовании и требует времени, чтобы привыкнуть. По сути, к каждому виджету должен быть применен макет. Странные вещи могут случиться, когда вы этого не сделаете.

1 голос
/ 20 декабря 2011

Я считаю, что это ошибка Создателя (по крайней мере, для open source V4.7.4). Мое решение заключается в следующем.

Не создавайте объект QTabWidget в основном проекте.

Создайте его самостоятельно (создав Qt-> Form-class).

Затем скопируйте 3 файла (.h,, cpp, .ui) в проект и добавьте их в проект.

Результат: он изменяет размеры как изменение размера главного окна.

0 голосов
/ 09 мая 2009

Чтобы разместить любой виджет в родительском виджете, вам нужно использовать определенный макет (сетка, горизонтальный, вертикальный и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...