2009-05-31 10 views
0

これはQtライブラリに関する質問であり、Webデザインに関するものではありません。Qtライブラリ内のコントロールのデフォルトのHTMLスタイル

QLabelと他のコントロールでは、「< h3> Some Text </h3>」などのHTMLテキストを設定できます。質問は次のとおりです。デフォルトのHTMLスタイルはどこに定義されていますか? < h3>タグにどのようなフォントを使用するのかを知るにはどうすればよいですか?

次の質問:デフォルトのHTMLスタイルを変更できますか?

編集:コード内の1か所にコントロールを表示する方法を指定します。すべてのラベルにCSSスタイルを指定することは、私にとっては優雅な解決策ではないようです。

Edit2:人々は質問をしないようです。私はもう一度やり直します。

 

QLabel* label = ... 
label->setText("This <b>is</b> a <h3>Header</h3>"); 
 

質問:どのようなフォントがラベルテキストレンダリングに使用されますか?どうすればそれらを制御できますか? < h3>ヘッダーのデフォルトのフォントサイズを指定する方法はありますか?

Edit3:ThomiはQTextDocument :: setDefaultStyleSheetを使用するように提案しました。しかしこれは単なる回避策です。インターフェイスのすべてのQTextEdits(およびQLabelsではなく)にCSSスタイルを手動で適用する必要があります。そして、質問があった:を見つける方法デフォルトのスタイルシート? QTextDocument :: setDefaultStyleSheetは、単一のQTextDocumentオブジェクトに対して単にそれをオーバーライドします。多分QTextDocument :: defaultStyleSheetはそれを返しますか?私は今Qtを埋め込んだコンピュータを持っていないので、私はそれを確認できません。

+0

Sergy - 私はQtについて何か読んだので非常に長い時間を過ごしていたので、私は区別できなかった。したがって、私は自分の答えを削除しました。明確化のためにありがとう。 –

+0

Sergey - あなたの質問のタイトルは、Qt/C++ –

答えて

2

何をしたいがQLabelで行うことができない... は、次の試してみてください... uが取り組んでrはどのQTバージョンを教えてください。 QLabelは、原始テキストラベルを保持するように設計されています.HTMLサポートはむしろ... ropeyです。

ただし、です。QTextEdit & QTextDocumentを使用してこれを達成してください。

このような何かを試してみてください(私はメモリからこれを書いているので、コンパイルまたは100%正確ではないかもしれない):

QTextDocument *doc = new QTextDocument(this); 
doc->setDefaultStyleSheet("h3 { font-color: red; }"); 
QTextEdit *edit = new QTextEdit(this); 
edit->setDocument(doc); 
edit->setHTML("this is a red <h3>heading</h3>"); 

重要なことは、あなたが変更することができますQTextDocumentを、使用することですHTMLスタイルシート。 QTのドキュメントから:

 
The default style sheet is applied to all newly HTML formatted text that is inserted into the document, for example using setHtml() or QTextCursor::insertHtml(). 

The style sheet needs to be compliant to CSS 2.1 syntax. 

Note: Changing the default style sheet does not have any effect to the existing content of the document. 

see here for more info

編集:

デフォルトのスタイルシートを取得するには、あなたがQTextDocument::DefaultStyleSheet()を呼び出すことができます - しかし、これは唯一のQTextDocumentsに適用され、またはすべてに適用されない場合がありますQtコントロール(QLabelを含む)。

+0

あなたの答えは質問に反映されました。 –

+0

問題に対処する他の方法はないようです。私はあなたに質問を受け入れました。 –

1

はおそらく、それを成し遂げるためにQApplication::setStyleSheet()またはQWidget::setStyleSheet()を使用することができますQt Documentation about Style Sheets

を見てください。

+0

編集された、それは正しい答えでなければならないことを言及する必要があるかもしれないと思います。 – Mahtar

+1

私は質問を作成する前にそれを読んだ。 HTMLについての言葉はありません。 –

+1

番号。彼はウィジェットスタイルシートと同じではないHTMLスタイルシートについて尋ねています。私が正しく理解していれば、ラベルウィジェットの画面上での表示方法を変更するのではなく、QLabelが単純なHTMLテキストのレンダリングに使用するHTMLスタイルを変更しようとしています。 – Thomi

1

他の回答で述べたように、ウィジェットスタイルではできますが、HTMLタグではできません。それを行う唯一の方法は、ウィジェットの中にCSSスタイルを個別に設定することです。text

Qtはリッチテキストエンジンを使用して、HTML 4仕様のルールに従って定義されたHTMLタグをレンダリングします。あなたは(たとえばあなたのラベルの内側に複数のスタイルを使用する場合を除き

MainWindow w;  
w.setStyleSheet("QLabel{font-size:20px; color:purple;};"); 

:あなたはすべてのあなたのラベルに一つだけのスタイルが必要な場合は、なぜこのようなsetStyleSheet()を使用して、それを設定しないSupported HTML Subset

を参照してください " よりスタイル ")これは正しい方法です。

+0

複数のスタイルを使用する必要があります。私はhtmlのラベルにスタイルを追加するいくつかの醜いラッパーを作成すると思います。 –

0

最新のQTすなわちQT4で。上記の回答が機能しています。

QLabel{ 
    border: 2px solid green; 
    border-radius: 4px; 
    padding: 2px; 
    background-image: url(images/welcome.png); 
} 

link

+1

上記の回答はうまくいきますが、私が想定しているさまざまな質問のためです。私はそれを明確にするために質問を編集する。 –

関連する問題