#c #qt #user-interface #qdialog
#c #qт #пользовательский интерфейс #qdialog #qt
Вопрос:
Когда я пытаюсь отобразить QDialog, он появляется в верхнем левом углу моего экрана без границ. Содержимое отрисовано правильно, но граница отсутствует.
Даже если я использую все виды WindowHint и WindowType, такие как Qt::Widget, Qt::Dialog или Qt::WindowTitleHint => Ничего не изменилось!
Спасибо за любые подсказки!
РЕДАКТИРОВАТЬ: я пробую тот же SW с Windows и в works (возможно, ifdef имеет значение …)
Операционная система: Ubuntu 16.04
QT: 5.6.1
MyDialog.cpp
MyDialog::MyDialog(MyDialog::MyDialogTypes type, QWidget *parent) :
QDialog(parent) ,
ui(new Ui::MyDialog)
{
ui->setupUi(this);
setDialogType(type);
}
MainWindow.cpp
bool MainWindow::confirm()
{
MyDialog dlg(MyDialog::Type1, this);
dlg.setWindowTitle("ABC");
return dlg.exec() != QDialog::Accepted
}
Комментарии:
1. В Linux для обычного Qt вам необходимо запустить оконный менеджер, который отображает фреймы и отвечает за изменение размера и позиционирование.
Ответ №1:
Вы можете задать ширину границы с помощью кода, вызвав setContentMargins
макет. Например:
ui->myQDialog->setContentsMargins(3,3,3,3); // sets the qdialog border width to 3px.
Комментарии:
1. @Sirius Границы Windows и поля макета отличаются. Ваш код будет устанавливать поля только для макета.
Ответ №2:
Я нашел решение. Это было за пределами кода. Один из моих коллег изменил конфигурацию Ubuntu, чтобы заставить мое приложение работать в полноэкранном режиме. Таким образом, не только главное окно было полноэкранным, но и все другие окна и окна сообщений. Мы изменили это, и это работает.
Я не хочу поэтому удалять этот вопрос, чтобы у некоторых других читателей была такая же проблема (или у тех же приятных коллег :-))