Как установить центральный виджет, заполняющий все главное окно в Qt - PullRequest
0 голосов
/ 09 мая 2018

У меня есть минимальный пример, подобный этому:

mWidget = new QWidget;
vLayout = new QVBoxLayout;
mLabel = new QLabel;
mLabel->setText("Text");
mLabel->setAlignment(Qt::AlignCenter);
mLabel->setStyleSheet("QLabel { border: 2px solid red; }");
this->setCentralWidget(mWidget);
mWidget->setLayout(vLayout);
vLayout->addWidget(mLabel);

enter image description here

Как видно из рисунка выше, кроме central widget, за красной границей все еще есть какая-то белая граница. Я пытаюсь сделать так, чтобы центральный виджет заполнил все основное окно, чтобы за красной рамкой не было белой границы. Может быть, по-другому сказать, это сделать окно без полей (не знаю, если я ищу окно без полей). Я гуглил, как сделать окно без полей, и попытался setWindowFlags(Qt::FramelessWindowHint), но это не то, что я хочу. Я не совсем понимаю, как этого добиться сейчас? Так что же мне стоит посмотреть в теме How to make a borderless window? Если это так, значит ли это, что я должен вызвать некоторые API Windows, чтобы это работало? Или я должен просто сделать это с некоторыми другими методами Qt?

Надеюсь, что кто-то может дать мне способ или дать мне несколько советов. Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

В соответствии с вашим Вопросом следует отрегулировать геометрию фрейма QMainwindow и геометрию QLable. Поэтому вы можете использовать следующий код строк:

setGeometry(0,0,320,280);
ui->label->setGeometry(0,0,320,245);
0 голосов
/ 10 мая 2018

Почему вы используете QMainWindow? Кажется, что люди используют этот класс, не задумываясь, для чего он. Вы только когда-либо хотите использовать QMainWindow, если у вас есть панели инструментов, строка состояния или вспомогательные подокна. Иначе это бессмысленно. То, что вы хотите, это «центральный виджет», который будет единственным виджетом, без встраивания в главное окно. Если вы создали его в файле .ui, вам придется отредактировать его вручную, чтобы изменить класс на QWidget, и полностью удалить промежуточный и теперь избыточный centralWidget.

...