1

QLabelを次のようにサブクラス化しました。

class TestLabel: public QLabel
{
    Q_OBJECT
public:
    TestLabel(QWidget *parent = 0):QLabel(parent){}
    TestLabel(const QString& text, QWidget *parent = 0):QLabel(text, parent){}

protected:
    void paintEvent(QPaintEvent *paint)
     {
         QStyleOption opt;
         opt.init(this);
         QPainter p(this);
         style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
         style()->drawItemText(&p,this->rect(),Qt::AlignLeft, (this->palette()), true, this->text());

     }
};

私は次のようにスタイルシートを設定しました:

TestLabel {
    font-size: 16px;
    color: rgb(127, 127, 127);
}

次を使用してテキストを折り返そうとしています:tlab->setWordWrap(true); paintEventをオーバーライドする前は、テキストは正しく折り返されていました。しかし、現在、テキストは折り返されていません。ドキュメントには、「テキストはフラグに従って配置および折り返されている」と記載されています。、しかし、どうすれば両方のフラグを渡すことができますか(両方とも別個の列挙型です)?

4

1 に答える 1

0

わかった。私は答えを得ました。私は間違ったクラスを見ていました。QTextOption::WordWrapを見ていました。

Qt::TextWordWrapを次のように使用する必要がありましたQt::AlignLeft | Qt::TextWordWrap

于 2012-08-29T13:19:21.537 に答える