QDialog отсутствует граница

#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, чтобы заставить мое приложение работать в полноэкранном режиме. Таким образом, не только главное окно было полноэкранным, но и все другие окна и окна сообщений. Мы изменили это, и это работает.

Я не хочу поэтому удалять этот вопрос, чтобы у некоторых других читателей была такая же проблема (или у тех же приятных коллег :-))