2017-07-16 25 views
0

私は現在、C++でQt 5.7-5.8で作業していますが、その下に黒い線が付いたQLabelに下線を引いています。私のQLabelがQGridLayoutの中にあることを知って、私はこのコードを試しましたが、それはその行を表示していません。C++でQtを使ってQGridLayoutのQLabelに下線を付けるには?

mViewerLayout->itemAtPosition(0, 0)->widget()->setStyleSheet("border-bottom: 8px solid black"); 

私は、オブジェクト名を設定し、そのobjectNameに()を介して、スタイルシートを設定しようとしましたが、私は中)(setStyleSheetの引用符内の関数呼び出しを代わりに「QLabel」の「QWidgetの」を書いてみましたコードサンプルを以下に示し、objectName()を使用せずに試しました。私はそれがどのように知っているにもかかわらず

mViewerLayout->itemAtPosition(0, 0)->widget()->setStyleSheet("QLabel {border-bottom: 8px solid black;}"); 

私はborder: 8px solid blackにスタイルシートを設定した場合、それが動作し、カバーQLabelのすべてのボーダーを、私はそれだけを強調したいとのborder-bottomが動作するようには思えません、 CSSの下の境界線を指定すると、Qtのドキュメントでもこの構文が指定されているようです。誰か私を修正してくださいできますか?

QLabel * lab = static_cast<QLabel *>(mViewerLayout->itemAtPosition(0, 0)->widget()); 
QFont f = lab->font(); 
f.setUnderline(true); 
lab->setFont(f); 

私はちょうどビルトイン下線の機能を使用することが容易になると偽のそれにしようとするよりも良い結果を与えると思います。このような何かについてどのように

答えて

0

QLabelに次のスタイルシートは、トリックを行う必要があります。

border-bottom-width: 1px; 
border-bottom-style: solid; 
border-radius: 0px; 

をより良い方法があるかもしれませんが、私が見るものはあなたが半径を指定しない場合、行が表示されていないということです。作業を表示する

全コード:

#include <QApplication> 
#include <QLabel> 
#include <QLayout> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    QWidget widget; 
    QVBoxLayout *l = new QVBoxLayout(&widget); 
    QLabel label; 
    label.setText("This text is underlined"); 
    label.setStyleSheet("border-bottom-width: 1px; border-bottom-style: solid; border-radius: 0px;"); 
    l->addWidget(&label); 
    l->addWidget(new QWidget()); 
    widget.show(); 
    return a.exec(); 
} 

結果は次のとおりです。

enter image description here

あなたは多分に設定されたスタイルと競合して自分のアプリケーションに設定された他のスタイルシートを持っていますかラベル?

+0

お返事ありがとうございます、私はそれを感謝します!あなたが推奨するスタイルシートを試しましたが、それでも行は表示されません。私はいくつかのことを試してみます。 –

+0

@ Quoc-Minh Qt 5.7と5.9でテストした私のアップデートを見ると、スタンドアロンの例(コード)で動作しているようです。この例は、スタンドアロンアプリケーションでは何をしますか? –

+0

ありがとう!あなたは今、私の問題を解決しました。私は、ラベルをQBoxLayoutの中に入れて、そのレイアウトをQBoxLayoutに設定するためのコンテナとしてQWidgetを動作させなければならなかったようです。そして、そのコンテナQWidgetをQGridLayoutに追加すると、QLabelの下端が表示されました。コンテナを持っていないと表示されない理由は分かりませんが、ああ、うまくいきます! –

0

+0

お返事ありがとうございます。事は、私はいくつかの言葉に下線を引いているのではない!私は、QLabelが形成する矩形の下の境界線の上に太い線を描きたいと思います。 –

関連する問題