好的我正在使用Qt Designer for c ++进行GUI,我有一堆标签设置,可以在文件加载后显示一些内容。
在用于显示已加载内容的标签上,我目前将它们设置为“稍后设置”,并且在初始GUI配置中,我在每个上面调用ui->label_id.setText("");
标签才可见。我真的只是希望他们有一些文本,所以我可以在设计器中直观地看到它们,但在加载内容之前程序运行时却没有。
所以我的问题是:这是处理此问题的最佳方法吗?或者是否有一个字符我可以在设计器中将文本设置为不会在运行时出现?
随着我的gui展开越来越多的标签,我不想让程序的加载时间陷入困境,将文本设置为“”为每个人,所以这就是我在这里的原因。
答案 0 :(得分:1)
一种可能的解决方案是使用透明颜色(0 alpha值)为该标签设置颜色。 这可以通过窗口小部件构造函数中的样式表来处理:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setStyleSheet("QLabel { color: qrgba(255, 255, 255, 0); }");
}
如果要有选择地将样式表应用于标签,可以使用各种Qt Style Sheet Selector Types。
例如,您可以使用ID选择器。如果您已在QtDesigner中将标签的objectName
属性设置为label_1
,则可以通过设置此样式表来有选择地隐藏此标签:
setStyleSheet("#label_1 { color: qrgba(255, 255, 255, 0); }");
更高级的解决方案是返回对象名称样式表的方法:
QString MainWindow::styleSheetForHiddenLabels(const QStringList &labelObjectNames)
{
QString styleSheet;
foreach (QString labelName, labelObjectNames) {
QString style("#");
style.append(labelName);
style.append(" { color: qrgba(255, 255, 255, 0); }");
styleSheet.append(style);
}
return styleSheet;
}
这种方法可以这样使用:
QStringList labelNames;
labelNames << "label1" << "label2" << "label3";
QString stylesheet = styleSheetForHiddenLabels(labelNames);
setStyleSheet(stylesheet);
答案 1 :(得分:0)
样式表答案的替代方案。
QList<QLabel*> widgets = this->findChildren<QLabel*>();
for (QLabel *label : widgets) {
label->setText("");
}
将它放在MainWindow类构造函数中。它将从您的窗口获取所有QLabel的列表,然后您可以循环浏览它们并将文本设置为“”。
答案 2 :(得分:0)
您可以使用对象检查器。在对象检查器中,您将看到一个标签列表,当您单击某些标签时,您将看到小部件周围的边框。这样您就可以看到标签,而不会在其中添加任何文字。