Qt中ui开发小技巧总结(1)

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);
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火撩猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值