考えられる解決策の 1 つは、そのラベルに透明な色 (アルファ値 0) を設定することです。これは、ウィジェット コンストラクターのスタイル シートを介して処理できます。
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);