Скрытие строки заголовка QMdiArea

MainWindow может легко скрыть использование строки заголовка:

setWindowFlags(Qt::CustomizeWindowHint);

Но при работе с QMdiArea, например:

ui->mdiArea->setWindowFlags(Qt::CustomizeWindowHint);
ui->mdiArea->addSubWindow(child);
child->showMaximized();

Вещи не могли работать. Я также попробую это:

child->setWindowFlags(Qt::CustomizeWindowHint);

и это:

setWindowFlags(Qt::WindowTitleHint);

Это все еще показываетвведите описание изображения здесь

Так как я могу это сделать?

Кстати: если не могу сделать это, могу ли я отключить 3 кнопки слева или перегрузить событие этих кнопок.

2 ответа

Это работает для меня:

child->setWindowFlags(Qt::FramelessWindowHint);

Вот пример создания подокна, которое является QLineEdit. Подокно не имеет строки заголовка:

void MainWindow::on_pushButtonAddSubWindow_clicked(){
  QLineEdit *edit = new QLineEdit(QString("Test"), this);
  QMdiSubWindow *sub = ui->mdiArea->addSubWindow(edit);
  sub->setWindowFlags(Qt::FramelessWindowHint);
  edit->show();
}

Решение @Klathzazt работает для меня, как он описал. Также вы можете использовать

auto w = new QWidget();
auto sub_w = area_.addSubWindow(w, 
             Qt::CustomizeWindowHint | Qt::Tool | Qt::WindowTitleHint);
sub_w->show();`<br>to create windows that have only title bar(no buttons).
Другие вопросы по тегам