Проблема изменения размера окна Qt

У меня проблема с перерисовкой окна QWidget после того, как его размер был отрегулирован. Я пробовал update () , repaint () , adjustSize () , но все, похоже, страдают от одного и того же: перерисовывается только часть окна , в результате чего оконная рама внизу и справа не видна. Размер окна также не изменяется полностью.

На случай, если это имеет значение, окно находится в QMdiArea .

Спасибо.

        //  ... some subwidget resizing and moving.
        calibrationWindowUIs[activeWindow].layoutWidget2->move(QPoint(oldXLeft, 30 + height + 21));
        calibrationWindowUIs[activeWindow].layoutWidget1->move(QPoint(oldXRight, 30 + height + 21));

        //  Set window size.
        calibrationWindows[activeWindow]->setMinimumSize(calibrationWindowUIs[activeWindow].tabWidget->geometry().width() + 40, calibrationWindowUIs[activeWindow].tabWidget->geometry().height() + 40);
        calibrationWindows[activeWindow]->update();

Примечание: я новичок в Qt; Возможно, я что-то не так делаю с макетами?

Edit: Возможно, я не дал достаточно информации. Хорошо, если честно, мне все еще нужно глубже вникать в макеты и связанные с ними материалы. Что я здесь пытался сделать, так это использовать Qt Designer для проектирования окна. Я сделал то, что, возможно, составляет глупую ошибку: я не использовал общий родительский макет для всего окна, а взломал его парой меньших макетов, которые мне поэтому приходится перемещать и изменять размер индивидуально. См. Экран Qt Designer (красные прямоугольники - единственные макеты): calibrationWindow.

Что происходит, так это то, что в кадре справа я проигрываю видеоклип, который может иметь различное разрешение. Я хочу, чтобы размер рамки менялся в зависимости от этого разрешения, что также означает, что кнопки и окно должны перемещаться / изменять размер соответственно. Именно здесь и вступает в силу изменение размера окна. Я уверен, что есть более элегантное решение, чем то, что я делаю здесь, но я пытаюсь справиться с несколькими другими сценариями здесь и, следовательно, с низким качеством кода.

В результате, когда я загружаю клип, окно пытается изменить размер, но делает это плохо; результат будет следующим: calibrationWindowB

Если окно перетащить, оно «выскочит» до нужного размера; тем временем, однако, это выглядит уродливо.

Еще пара вопросов: используете ли вы Qt Designer для разработки пользовательского интерфейса? Я обнаружил, что программно вы можете добиться гораздо лучшего контроля над вашими интерфейсами. Одна вещь, которую я не мог сделать в дизайнере, - это иметь макет, порожденный основным виджетом, т. Е. Эквивалент наличия следующего фрагмента кода:

QVBoxLayout* layout = new QVBoxLayout;
this->setLayout(layout);

Макет, помещенный в конструктор, всегда, кажется, создает этот подвиджет 'layoutWidget' , которому вы разместили макет , а затем - . В любом случае?

7
задан Kristian D'Amato 3 July 2011 в 11:10
поделиться