QPushbuutonでテキストを設定中に問題に直面しています。 ボタンにテキストを設定しましたが、決して表示されません。QPushbutton settext QTの問題?
QPushbuttonのmousepress、mousereleaseイベントのカスタムクラスを作成しました。
私はこのクラスにQPushbuttonを宣伝します。
私のコードは次のようになります。
//Customclass.h
列挙ButtonState {通常、 マウスオーバー、 をプッシュ}。私のページで
class CustomButtonStates : public QPushButton
{
Q_OBJECT
public:
explicit CustomButtonStates(QWidget *parent = 0,const QString &normal = "", const QString &active = "",QString strText = "");
virtual ~CustomButtonStates();
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *e);
private:
QString m_PixmapNormal;
QString m_PixmapActive;
QString m_strText;
bool m_bPressed;
ButtonState state;
public:
QImage *NormalImage;
QImage *MouseOverImage;
QImage *PushedImage;
};
// .cppファイル
CustomButtonStates::CustomButtonStates(QWidget *parent,const QString &normal, const QString &active,QString strText) :
QPushButton(parent)
{
m_PixmapNormal = normal ;
m_PixmapActive = active ;
m_strText = strText ;
state = Normal;
}
void CustomButtonStates::mousePressEvent(QMouseEvent *event)
{
QPushButton::mousePressEvent(event);
state = Pushed;
this->repaint();
}
void CustomButtonStates::mouseReleaseEvent(QMouseEvent *event)
{
QPushButton::mouseReleaseEvent(event);
state = Normal;
emit clicked();
this->repaint();
}
void CustomButtonStates::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage *pic = NULL;
NormalImage = new QImage(m_PixmapNormal);
PushedImage = new QImage(m_PixmapActive);
switch (state)
{
case Normal:
pic = NormalImage;
break;
case MouseOver:
pic = MouseOverImage;
break;
case Pushed:
pic = PushedImage;
break;
default:
pic = NormalImage;
break;
}
painter.drawImage(0, 0, *pic);
}
CustomButtonStates::~CustomButtonStates()
{
delete NormalImage;
delete MouseOverImage;
delete PushedImage;
}
:
CustomButtonStates *btnMain ;
btnMain = new CustomButtonStates(this,":/Sampl1.png",":/Sample2.png","Users");
btnMain->setText("Users");
btnMain->setGeometry(QRect(3,6,65,33));
connect(btnMain,SIGNAL(clicked()),this,SLOT(on_btnUsers_clicked()));
カスタムペイントイベントの最後の行にQPushButton :: paintevent(event)を追加しました。どの画像にボタンが割り当てられていないのですか? – user662285
ペイントイベントを最初に呼び出すと、イメージが適用されます。私の間違い。それが動作しない場合は、QImageをペイントした後に自分でテキストをペイントする必要があります(実際にはQPixmap btwでなければなりません) –
テキストをペイントする方法は? – user662285