作者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/cn.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