16,212
社区成员
发帖
与我相关
我的任务
分享
.h
class WidgetLc:public QWidget
{
Q_OBJECT
public:
WidgetLc(QWidget * parent=0,Qt::WFlags f=0);
void setFocusRout(QString fr);
protected:
void paintEvent(QPaintEvent *event);
private:
QString FocusRout;
};
.cpp
void WidgetLc::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter *painter=new QPainter(this);
........
QPainterPath myPath;
myPath.addText(myPointF, myFont,FocusRout);
painter->drawPath(myPath);
}
void WidgetLc::setFocusRout(QString fr)
{
FocusRout=fr;
update();
}
//在初始化時setFocusRout(QString fr)正常執行,能夠畫出文字,但在外部調用時paintEvent()沒有執行
void WidgetLc::setFocusRout(QString fr)
{
FocusRout=fr;
//這裏FocusRout都可以取到新的值,
update();//只是執行update()後paintEvent()事件不執行.
}
WidgetLc::WidgetLc(QWidget * parent, Qt::WFlags f):QWidget(parent, f)
{
setUpdatesEnabled(true);//在這加了也不可以,另外,用過repaint()也是一樣
....
}
MainWin::MainWin( QWidget * parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
wid_lc=new WidgetLc(gb_lc);
wid_lc->setFocusRout("123456789");//這裏能夠正常
......
}
class MainWin : public QMainWindow, public Ui::Main_Dlg
{
Q_OBJECT
public:
MainWin( QWidget * parent = 0, Qt::WFlags f = 0 );
~MainWin();
private:
QWidget *centerm;
WidgetLc *wid_lc;
void btnClicked();
};
.cpp
MainWin::MainWin( QWidget * parent, Qt::WFlags f)
: QMainWindow(parent, f)
{
wid_lc=new WidgetLc(gb_lc);
wid_lc->setFocusRout("123456789");//這裏能夠正常
......
}
void MainWin::btnClicked()
{
wid_lc->setFocusRout("abcdefg");//這裏執行後就不會顯示,請各位幫忙看一下,謝謝.
}