91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QT基礎(八) 三態按鈕設計

發布時間:2020-07-29 14:30:04 來源:網絡 閱讀:1182 作者:WZM3558862 欄目:開發技術

三態按鈕(普通態,鼠標停留態,點擊態)在設計炫麗界時是很常用的一項功能,但QT并沒有直接支持這個功能,只好自己寫一個了,通過繼承QToolButton實現。


上代碼:


[cpp] view plain copy print?

  1. #include <QtGui>  

  2.   

  3. class CoolButton : public QToolButton  

  4. {  

  5.     Q_OBJECT  

  6. private:  

  7.     QIcon m_NormalIcon;  

  8.     QIcon m_FocusIcon;  

  9.     QIcon m_PressedIcon;  

  10. protected:  

  11.     void enterEvent(QEvent *event);  

  12.     void leaveEvent(QEvent *event);  

  13.     void mousePressEvent(QMouseEvent *event);  

  14.     void mouseReleaseEvent(QMouseEvent *event);  

  15. public:  

  16.     CoolButton(QWidget *parent = 0);  

  17.     virtual ~CoolButton();  

  18.     void SetButtonIcons(const QIcon &normal,   

  19.         const QIcon &focus = QIcon(),  

  20.         const QIcon &pressed = QIcon() );  

  21. };  

  22.   

  23. CoolButton::CoolButton(QWidget *parent)  

  24. : QToolButton(parent)  

  25. {  

  26.     //為了讓圖標看起來自然一點而設置了這兩個操作  

  27.     setDown(false);  

  28.     setFocusPolicy(Qt::NoFocus);  

  29. }  

  30.   

  31. CoolButton::~CoolButton()  

  32. {  

  33.   

  34. }  

  35.   

  36. //重載“進入”和“離開”事件,進入時切換為另一個圖標,離開時還原  

  37. void CoolButton::enterEvent(QEvent *event)  

  38. {  

  39.     if( isEnabled() && !m_FocusIcon.isNull() )  

  40.         setIcon(m_FocusIcon);  

  41. }  

  42.   

  43. void CoolButton::leaveEvent(QEvent *event)  

  44. {  

  45.     if( isEnabled() )  

  46.         setIcon(m_NormalIcon);  

  47. }  

  48.   

  49. //重載鼠標事件  

  50. void CoolButton::mousePressEvent(QMouseEvent *event)  

  51. {  

  52.     if( isEnabled() && !m_PressedIcon.isNull() )  

  53.         setIcon(m_PressedIcon);  

  54.     QToolButton::mousePressEvent(event);  

  55. }  

  56.   

  57. void CoolButton::mouseReleaseEvent(QMouseEvent *event)  

  58. {  

  59.     if( isEnabled() && m_FocusIcon.isNull() )  

  60.         setIcon(m_FocusIcon);  

  61.     QToolButton::mouseReleaseEvent(event);  

  62. }  

  63.   

  64. void CoolButton::SetButtonIcons(const QIcon &normal,   

  65.     const QIcon &focus, const QIcon &pressed)  

  66. {  

  67.     m_NormalIcon = normal;  

  68.     m_FocusIcon = focus;  

  69.     m_PressedIcon = pressed;  

  70.     setIcon(m_NormalIcon);  

  71. }  

  72.   

  73. #include "main.moc"  

  74.   

  75. int main(int argc, char **argv)  

  76. {  

  77.     QApplication app(argc, argv);  

  78.     CoolButton *button = new CoolButton;  

  79.     //QObject::connect(button, SIGNAL(clicked()), qApp, SLOT(quit()));  

  80.     button->setIconSize(QSize(40, 40));  

  81.     button->SetButtonIcons(QIcon("normal.png"), QIcon("focus.png"), QIcon("pressed.png"));  

  82.     button->show();  

  83.     return app.exec();  

  84. }  


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭阳县| 长武县| 登封市| 当雄县| 都江堰市| 崇义县| 南平市| 丰镇市| 措勤县| 石阡县| 鄯善县| 凤台县| 海口市| 克什克腾旗| 开封县| 大渡口区| 迁西县| 文登市| 石泉县| 泊头市| 河津市| 华安县| 靖宇县| 浦江县| 忻州市| 本溪| 大新县| 洪泽县| 靖州| 博爱县| 吉安市| 黔东| 获嘉县| 安新县| 从化市| 鹤岗市| 萨嘎县| 阿拉善左旗| 阿拉尔市| 临武县| 沧源|