作者checkIO (chec)
看板C_and_CPP
標題[問題] QWidget 內部連動問題
時間Sat Dec 10 12:44:17 2016
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1481345059.A.032.html
1F:→ uranusjr: 設 setCheckable(true) 然後改用 toggled(bool) signal 12/11 06:39
2F:→ uranusjr: 然後在 parent 的 focus event 切換 checked state 12/11 06:41
3F:→ 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