1

MainWindow 可以轻松隐藏标题栏使用:

setWindowFlags(Qt::CustomizeWindowHint);

但是在使用 QMdiArea 时,例如:

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

事情无法进行。我也试试这个:

child->setWindowFlags(Qt::CustomizeWindowHint);

和这个:

setWindowFlags(Qt::WindowTitleHint);

它仍然显示在此处输入图像描述

那我该怎么办?

顺便说一句:如果不能做到这一点,我可以禁用左侧的 3 个按钮或重载这些按钮事件。

4

2 回答 2

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();
}
于 2013-12-27T22:26:14.317 回答
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).
于 2014-09-04T11:05:44.613 回答