2013-12-26 4 views
0

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

setWindowFlags(Qt::CustomizeWindowHint); 

Но когда делать с QMdiArea, как:

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

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

child->setWindowFlags(Qt::CustomizeWindowHint); 

и это:

setWindowFlags(Qt::WindowTitleHint); 

Это еще showes enter image description here

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

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

ответ

1

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

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(); 
} 
+0

Спасибо. Я также пробовал это, все еще не работаю. –

+0

Я заметил, что если вы установите другие флаги или установите каскад или что-то вроде этого, можете сбросить этот флаг. – Klathzazt

+0

Вы имеете в виду, что это действительно работает для QMdiArea, и я потерпел неудачу, потому что я установил другие флаги? Я не устанавливал другие флаги. –

1

@ Решение 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). 
Смежные вопросы