我有一个QGroupBox。根据上下文的不同,其标题可能是多余的(显示在GUI的其他位置),因此我需要使好像QGroupBox不在这里。...但是我必须保留其内容可见(所以我不想打电话QGroupBox::hide())!
我需要在运行时动态地执行此操作,并希望避免创建/销毁QGroupBox+使其内容重新父代化。
到目前为止我尝试过的是:
QGroupBox 可见:
QGroupBox::setTitle("") 删除文本。 QGroupBox::setFlat(true) 使框架成为一行。我最终得出以下结论:
还不错...但是一行仍然保留....有没有办法完全隐藏QGroupBox框架但保持其内容可见?
我的选择:
QGroupBox theBox;
theBox.setFlat(true);
theBox.setStyleSheet("border:0;");
Run Code Online (Sandbox Code Playgroud)
您可以使用QFrame+ QGridLayout(或一些更复杂的布局组合)+ QSS 而不是QGroupBox.
考虑QGroupBox通过 QSS 的唯一、简单的解决方案可能是:
static const char kSavedTitle[] = "_savedTitle";
void hideBoxFrame(QGroupBox * box) {
box->setProperty(kSavedTitle, box->title());
box->setTitle(QString());
box->setStyleSheet("border:none");
}
void showBoxFrame(QGroupBox * box) {
box->setTitle(box->property(kSavedTitle).toString());
box->setStyleSheet(QString());
}
Run Code Online (Sandbox Code Playgroud)