Qt GUI设计-是否有一个不可见的字符适合标签文本
Qt GUI Design - Is there an invisible character suitable for label text?
好的,我正在使用Qt Designer for c++开发GUI,并且我设置了一堆标签,以便在加载文件后显示文件中的一些内容。
在用于显示加载内容的标签上,我当前已将它们设置为"稍后设置",在初始GUI配置中,我在每个标签上调用ui->label_id.setText("");
,然后才能看到它们。我真的只是想让它们有一些文本,这样我就可以在设计器中直观地看到它们,但在加载内容之前程序运行时却没有。
所以我的问题是:这是处理这个问题的最佳方法吗?或者,我可以在设计器中设置一个不会在运行时出现的文本字符吗
随着我的gui的扩展,标签越来越多,我不想让程序的加载时间停滞不前,将每个标签的文本设置为",所以这就是我来这里的原因。
一种可能的解决方案是为具有透明颜色(0 alpha值)的标签设置颜色。这可以通过小部件构造函数中的样式表来处理:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setStyleSheet("QLabel { color: qrgba(255, 255, 255, 0); }");
}
如果您想有选择地将样式表应用于标签,可以使用所有类型的Qt样式表选择器类型。例如,可以使用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);
样式表答案的替代方案。
QList<QLabel*> widgets = this->findChildren<QLabel*>();
for (QLabel *label : widgets) {
label->setText("");
}
将其放置在MainWindow类构造函数中。它将从您的窗口中获得所有QLabel的列表,然后您可以循环浏览它们并将文本设置为"。
您可以使用对象检查器。在对象检查器中,您将看到一个标签列表,当您单击某些标签时,您会看到小部件周围的边框。这样你就可以在不添加任何文本的情况下查看标签。
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 如何在C++中确定文本文件中的元素是字符还是数字
- 如何从文本文件中读取数值,直到遇到字符类型?
- 如何在C++中反转文本文件中字符的顺序?
- 如何从代码本身向 wxwidgets 中的文本控件插入字符?
- 无法将整个文本文件复制到字符数组
- 在处理任何字符大小的模板中使用字符串文本
- 从我的 2DgridArray 中的文本文件中获取每个字符
- 从文本文件 (C++) 生成字符矩阵
- 如何在给定文本中用字符数组替换符号
- 如何在文本文件中间插入字符
- 将字符串文本分配给字符*:const_cast<字符 *> 与使用 char 数组
- 如何从文本文件中一次读取一个字符
- 字符* 文本消息[] 如何在内存中格式化?
- VS2013 字符文本不能作为 MSDN 的规范工作
- 为什么 C 中的字符文本大小与 C++ 中的字符文本大小不同
- 以本地化安全的方式比较C++中的字符串/字符和字符串/字符文本
- 在块中分配字符文本"if"
- C++编译时将字符串文本转换为多字符文本
- C++将字符串文本添加到字符文本