[問題] QWidget 內部連動問題

看板C_and_CPP作者 (chec)時間7年前 (2016/12/10 12:44), 7年前編輯推噓0(003)
留言3則, 1人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) win7 vs2015 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) qt 5.7 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我寫了一個新的widget 裡面有兩個元件 我之後會在其他Form上 使用多個myWidget class myWidget : public QWidget { Q_OBJECT public: myWidget (QWidget *parent = 0); ~myWidget (); QPushButton *btnIcon; QLabel *iconValue; public slots: void labelChnageSize(); private: }; 我想讓btnIcon被click的時候 讓iconUnitName變大 (目前是用 connect(btnIcon, SIGNAL(clicked()), this, SLOT(labelChnageSize()));) 但等到其他myWiget被選取的時候 我現在的iconUnitName字體就變小 請問我要怎麼做呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.220.20 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481345059.A.032.html

12/11 06:39, , 1F
設 setCheckable(true) 然後改用 toggled(bool) signal
12/11 06:39, 1F

12/11 06:41, , 2F
然後在 parent 的 focus event 切換 checked state
12/11 06:41, 2F

12/11 06:43, , 3F
另一個方法是 subclass button 然後覆寫 focusOutEvent
12/11 06:43, 3F
subclass button 之後 會吃不到在myWidget裡面的iconValue 這樣是要寫全域變數嗎? 在myPushButton 複寫 focusOutEvent之後 想去改myWidget裡面的iconValue #pragma once #ifndef NEWWIDGET_H #define NEWWIDGET_H #include<QWidget> #include<QPushButton> #include<QLabel> class myPushButton : public QPushButton { Q_OBJECT public: myPushButton(QWidget *parent = 0); ~myPushButton(); protected: //virtual void focusInEvent(QFocusEvent *e); virtual void focusOutEvent(QFocusEvent *e); private: }; class newWidget : public QWidget { Q_OBJECT public: newWidget(QWidget *parent = 0); ~newWidget(); //QPushButton *btnIcon; QLabel *iconName; QLabel *iconValue; myPushButton *btnIcon; public slots: void labelChnageSize(); private: int thisWidth = 0; int thisHeight = 0; }; #endif // WIDGETTEST_H ※ 編輯: checkIO (59.124.46.66), 12/12/2016 11:04:47
文章代碼(AID): #1OIuWZ0o (C_and_CPP)