看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
uranusjr: 設 setCheckable(true) 然後改用 toggled(bool) signal 12/11 06:39
uranusjr: 然後在 parent 的 focus event 切換 checked state 12/11 06:41
uranusjr: 另一個方法是 subclass button 然後覆寫 focusOutEvent 12/11 06:43
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