質問
:子クラスと親クラスの両方からQWidgetをペイントすることはできますか?私は、次の要素を備え、ボタンのウィジェットを作成したいと思います
- 設定可能な背景色
- ボタンサイズ、透明アイコン
- 設定可能に配置テキスト
QToolButton
よりもQPushButton
が好きなので、私は既知の問題に直面しています(hereおよびhere)のアイコン/テキストの配置
私のアプローチは、QPushButton
クラスを特化し、paintEvent
メソッドを上書きすることです(下記のコードを参照してください)。テキストを手作業で描画し、残りの部分(アイコンと背景)を親クラスに任せればいいです。しかし、今のところテキストをペイントしていないようです。
これは可能なのでしょうか、私のエラーはどこかにあるのですか、自分でペイントする必要がありますか?
コード
class MyPushButton : public QPushButton
{
public:
MyPushButton() : QPushButton() {}
virtual ~MyPushButton() = default;
protected:
virtual void paintEvent(QPaintEvent* e) override {
QPushButton::paintEvent(e);
QPainter p(this);
p.drawText(0,0, "label");
}
};
私もそう思っていましたが、成功しませんでした。おそらくそこに私はここで絵画で何か間違っているよ: 'QPainter p(this);' 'p.drawText(0,0、" label ");' – bunto1
編集がうまくいきますそれは受け入れられる。なぜポイントが機能していないのかは別の問題です。ありがとう! – bunto1
@ bunto1:確かに、あなたがそれを把握するために詳細を投稿してください:) – PRIME