QT 基础 1 QPushButton
1基本设置1.0设置大小QPushButton *TiBar_pMinimizeBtn = nullptr;TiBar_pMinimizeBtn = new QPushButton;设置BUTTON及ICON大小TiBar_pMinimizeBtn->setFixedSize(32, 32);TiBar_pMinimizeBtn->setIconSize(TiBar_pMinimize
·
1 基本设置
1.0 设置大小
QPushButton *TiBar_pMinimizeBtn = nullptr;
TiBar_pMinimizeBtn = new QPushButton;
设置BUTTON及ICON大小
TiBar_pMinimizeBtn->setFixedSize(32, 32);
TiBar_pMinimizeBtn->setIconSize(TiBar_pMinimizeBtn->size());
1.2 设置系统ICON
#include <qstyle.h>
TiBar_pMinimizeBtn->setIcon(style()->standardIcon(QStyle::SP_TitleBarMinButton));
提供的系统ICON有
enum StandardPixmap {
SP_TitleBarMenuButton,
SP_TitleBarMinButton,
SP_TitleBarMaxButton,
SP_TitleBarCloseButton,
SP_TitleBarNormalButton,
SP_TitleBarShadeButton,
SP_TitleBarUnshadeButton,
SP_TitleBarContextHelpButton,
SP_DockWidgetCloseButton,
SP_MessageBoxInformation,
SP_MessageBoxWarning,
SP_MessageBoxCritical,
SP_MessageBoxQuestion,
SP_DesktopIcon,
SP_TrashIcon,
SP_ComputerIcon,
SP_DriveFDIcon,
SP_DriveHDIcon,
SP_DriveCDIcon,
SP_DriveDVDIcon,
SP_DriveNetIcon,
SP_DirOpenIcon,
SP_DirClosedIcon,
SP_DirLinkIcon,
SP_DirLinkOpenIcon,
SP_FileIcon,
SP_FileLinkIcon,
SP_ToolBarHorizontalExtensionButton,
SP_ToolBarVerticalExtensionButton,
SP_FileDialogStart,
SP_FileDialogEnd,
SP_FileDialogToParent,
SP_FileDialogNewFolder,
SP_FileDialogDetailedView,
SP_FileDialogInfoView,
SP_FileDialogContentsView,
SP_FileDialogListView,
SP_FileDialogBack,
SP_DirIcon,
SP_DialogOkButton,
SP_DialogCancelButton,
SP_DialogHelpButton,
SP_DialogOpenButton,
SP_DialogSaveButton,
SP_DialogCloseButton,
SP_DialogApplyButton,
SP_DialogResetButton,
SP_DialogDiscardButton,
SP_DialogYesButton,
SP_DialogNoButton,
SP_ArrowUp,
SP_ArrowDown,
SP_ArrowLeft,
SP_ArrowRight,
SP_ArrowBack,
SP_ArrowForward,
SP_DirHomeIcon,
SP_CommandLink,
SP_VistaShield,
SP_BrowserReload,
SP_BrowserStop,
SP_MediaPlay,
SP_MediaStop,
SP_MediaPause,
SP_MediaSkipForward,
SP_MediaSkipBackward,
SP_MediaSeekForward,
SP_MediaSeekBackward,
SP_MediaVolume,
SP_MediaVolumeMuted,
SP_LineEditClearButton,
// do not add any values below/greater than this
SP_CustomBase = 0xf0000000
};
1.3 设置资源中ICON
TiBar_pMinimizeBtn->setIcon(QIcon(":/title/images/title/my_btn_min_white_n.png"));
1.4 设置样式
1.4.1 使用setStyleSheet设置
TiBar_pMinimizeBtn->setStyleSheet("border:none;background-color:transparent;");
1.4.2 使用QSS设置
1) 首先,为这个按钮设置定位属性
TiBar_pMinimizeBtn->setProperty("minimizeProperty", "true");
2)QSS中样式
* [minimizeProperty="true"] {
border:none;
background-color:transparent;
}
* [minimizeProperty="true"]:hover {
border:none;
background-color: rgb(88,87,88);
}
1.5 加入布局中
QHBoxLayout *pLayout = new QHBoxLayout(this);
pLayout->addWidget(TiBar_pIconLabel);
pLayout->addWidget(TiBar_pTitleLabel);
pLayout->addWidget(TiBar_pMinimizeBtn);
pLayout->addWidget(TiBar_pMaximizeBtn);
pLayout->addWidget(TiBar_pCloseBtn);
pLayout->setSpacing(10);
pLayout->setContentsMargins(10, 5, 10, 5); 整个布局的边距
1.6 添加响应事件
connect(TiBar_pMinimizeBtn, SIGNAL(clicked()), this, SLOT(on_TitleBar_Clicked()));
2 更改Horver 状态时背景和图标
2.1 Horver时改变背景
如果只是改变背景,使用样式就可
TiBar_pMinimizeBtn->setStyleSheet("QPushButton{background-color:rgb(0,0,0);\
color:white; border-radius:10px; border:2px groove gray;\
border - style: outset;}"
"QPushButton:hover{background-color:rgb(255,255,255);color: black;}"
"QPushButton:pressed{background-color:rgb(85, 170, 255);\
border - style: inset; }"
);
或直接QSS样式
* [minimizeProperty="true"] {
border:none;
background-color:transparent;
}
* [minimizeProperty="true"]:hover {
border:none;
background-color: rgb(255,0,0);
}
本来想着通过设置 qproperty-icon: url(:/1.png); 改变Horver图标,结果发现,使用上述两种方式都不能实现图标的改变
2.2 Horver时更改图标
2.2.1 给按钮添加事件过滤器
TiBar_pCloseBtn->installEventFilter(this);
2.2.2 重写事件过滤函数 eventFilter
virtual bool eventFilter(QObject *obj, QEvent *event);
bool MyTitleBar::eventFilter(QObject *obj, QEvent *event)
{
switch (event->type())
{
case QEvent::HoverEnter:
{
if (obj == TiBar_pMinimizeBtn)
TiBar_pMinimizeBtn->setIcon(QIcon(":/title/images/title/my_btn_min_white_h.png"));
break;
}
case QEvent::HoverLeave:
{
if (obj == TiBar_pMinimizeBtn)
TiBar_pMinimizeBtn->setIcon(QIcon(":/title/images/title/my_btn_min_white_n.png"));
break;
}
default:
return false;
}
return QWidget::eventFilter(obj, event);
}
更多推荐



所有评论(0)