1.标题栏设置为系统默认图标
m_pBtnClosed = new QPushButton;
m_pBtnClosed->setToolTip(tr("关闭"));
m_pBtnClosed->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_TitleBarCloseButton)));
m_pBtnMinimized = new QPushButton;
m_pBtnMinimized->setToolTip(tr("最小化"));
m_pBtnMinimized->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_TitleBarMinButton)));
m_pBtnMaximized = new QPushButton;
m_pBtnMaximized->setToolTip(tr("最大化"));
m_pBtnMaximized->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_TitleBarMaxButton)));
m_pBtnHelp = new QPushButton;
m_pBtnHelp->setToolTip(tr("帮助"));
m_pBtnHelp->setIcon(QIcon(QApplication::style()->standardIcon(QStyle::SP_MessageBoxQuestion)));
2.去掉最大化最小化按钮显示
setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint & ~Qt::WindowMinimizeButtonHint);
3.窗体通过样式表设置背景时,主控件不能为QWidget,否则不生效,只对其中部分子控件有效果
如setStyleSheet(“background-color:rgb(0,158,155)”); //控件改为QFrame,QDialog,设置可生效
4.窗体设置最大化(全屏)
QWidget w; w.showFullScreen();
5.槽函数识别发送信号对象
void CtrlPanelWgt::slot_NextStep()
{
QFrame *pWgt = qobject_cast<QFrame *>(sender());
if (m_spWgt1 == pWgt)
{
//发送对象为m_spWgt1;
}
else if (m_spWgt2 == pWgt)
{
//发送对象为m_spWgt2;
}
}
6.QStackedWidget使用需注意
使用insertWidget()插入控件时,index必须从0开始设置,否则setCurrentIndex()时会出现显示误差。
{
QStackedWidget *pStackWgt = new QStackedWidget(this);
QWidget *pWgt1 = new QWidget;
pStackWgt->setStyleSheet("background-color:red");
QWidget *pWgt2 = new QWidget;
pStackWgt->setStyleSheet("background-color:green");
pStackWgt->insertWidget(0, pWgt1);
pStackWgt->insertWidget(1, pWgt2);
pStackWgt->setCurrentIndex(0);
}
7.小范围清空布局,重新设置
void TestWidget::removeLayout(QWidget *pWgt, QLayout *layout)
{
pWgt->hide();
QLayoutItem *child;
if (layout == NULL)return;
while ((child = layout->takeAt(0)) != NULL)
{
if (child->widget())
{
child->widget()->setParent(NULL);
}
else if (child->layout())
{
removeLayout(NULL, child->layout());
}
delete child;
}
delete layout;
}
8.设置模态非模态显示
//Qt::NonModal 不阻塞
//Qt::WindowModal 阻塞父窗口,所有祖先窗口及其子窗口
//Qt::ApplicationModal 阻塞整个应用程序
QWidget *pWgt = new QWidget();
pWgt->setWindowModality(Qt::ApplicationModal); //设置阻塞类型
pWgt->setAttribute(Qt::WA_ShowModal, true); //属性设置 true:模态 false:非模态
pWgt->show();
9.设置程序窗口充满屏幕
QDesktopWidget* desktopWidget = QApplication::desktop();
QRect screenRect = desktopWidget->availableGeometry();
this->setFixedSize(screenRect.width(),screenRect.height());
10.添加分割线
QFrame *pFrame = new QFrame();
pFrame->setFixedSize(27, 1);
pFrame->setStyleSheet("background-color:rgb(115,115,115)");
pVLayout->addWidget(pFrame);