0

さて、私はC ++用のQt Designerを使用してGUIに取り組んでおり、ロードされたファイルのコンテンツを表示するために一連のラベルを設定しています。

読み込まれたコンテンツを表示するために使用されるラベルでは、現在「後で設定」に設定されており、GUI の初期設定では、表示さui->label_id.setText("");れる前に各ラベルを呼び出しています。コンテンツが読み込まれる前にプログラムが実行されているときは、デザイナーで視覚的に見ることができるようにテキストを表示したいだけです。

だから私の質問は:これはこれを処理するための最良の方法ですか? または、実行時に表示されないデザイナーでテキストを設定できる文字はありますか?

GUI が拡張されるにつれてラベルがどんどん増えていくので、すべてのテキストを "" に設定するプログラムの読み込み時間を遅らせたくないので、ここにいます。

4

3 に答える 3

1

考えられる解決策の 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);
于 2013-06-26T14:16:24.197 に答える
0

スタイルシートの回答の代替。

QList<QLabel*> widgets = this->findChildren<QLabel*>();

for (QLabel *label : widgets) {
    label->setText("");
}

これを MainWindow クラスのコンストラクターに配置します。ウィンドウからすべての QLabel のリストを取得し、それらを循環してテキストを "" に設定できます。

于 2013-06-26T14:33:02.183 に答える
0

オブジェクト インスペクタを使用できます。オブジェクト インスペクタでは、ラベルのリストが表示されます。ラベルの一部をクリックすると、ウィジェットの周囲に境界線が表示されます。そうすれば、テキストを入れなくてもラベルを見ることができます。

于 2013-07-03T10:49:09.447 に答える