Qt自定义toolbar为标题栏

Qt自定义标题栏

版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:Qt自定义标题栏     本文地址:http://techieliang.com/2017/11/326/

代码较多,显示效果不佳,建议原地址查看

文章目录

图片

1. 标题栏的最大化、最小化、关闭按钮图标

此类按钮建议使用QToolButton实现,图标可以自定义也可以用Qt自带的基础图标

  1. QToolButton *toolButton_mini;//最小化
  2. QToolButton *toolButton_max;//最大化
  3. QToolButton *toolButton_close;//关闭
  4. toolButton_mini->setIcon(style()->standardPixmap(QStyle::SP_TitleBarMinButton));
  5. toolButton_max->setIcon(style()->standardPixmap(QStyle::SP_TitleBarMaxButton));
  6. toolButton_close->setIcon(style()->standardPixmap(QStyle::SP_TitleBarCloseButton));

将上述控件的点击事件与相应函数connect即可实现对应功能,注意最大化分为“最大化”和“还原”两个状态,且Qt提供了两个函数,不能直接connect。对应函数名分别为:

  1. showMinimized()
  2. showNormal()//还原
  3. showMaximized()//最大化
  4. close()

2. QToolBar基本使用

直接new一个控件,然后再窗口类中使用:

  1. addToolBar(this);

实现此控件的添加

通过QToolBar *a;a->asetMovable(false);实现禁止移动,同时取消工具栏左侧的移动标示按钮

3. QToolBar控件局右显示

一般关闭等按钮在右侧,QToolBar默认在左侧,可以在中间添加一个QWidget实现占位,从而保证按钮局右

  1. QWidget *toolBar_seat = new QWidget;
  2. toolBar_seat->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);//长宽自动扩展
  3. addWidget(toolBar_seat);

4. 双击标题栏最大化

直接重写QObject的鼠标双击事件

  1. protected:
  2. void TitleBar::mouseDoubleClickEvent(QMouseEvent *event) {
  3. if(Qt::LeftButton == event->button())
  4. MaximizeButtonClicked();//此处调用最大化/还原按钮点击槽
  5. event->ignore();
  6. }

5. 窗口拖拽

使用自定义标题栏以后,窗口将失去拖拽标题栏移动的功能,通过此步骤可以重现,同样重写对应鼠标事件

  1. virtual void mousePressEvent(QMouseEvent *event);
  2. virtual void mouseReleaseEvent(QMouseEvent *event);
  3. virtual void mouseMoveEvent(QMouseEvent *event);

主要原理是在按下时记录按下状态及按下时的窗口坐标,抬起时取消状态,在鼠标移动时判断状态并根据当前坐标差进行移动。

  1. event->globalPos()//获取系统下全局坐标
  2. widget=window();//获取主窗口指针
  3. qwidget->move()//移动窗口

具体源码请见GitHubQtWidgetsExamples

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt提供了QToolBar类用于在应用程序中创建工具栏。要自定义工具栏的样式,可以通过以下步骤实现: 1. 创建一个新的Qt应用程序项目或打开现有的项目。 2. 在主窗口的头文件中包含QToolBar的头文件。 ```cpp #include <QToolBar> ``` 3. 在主窗口的构造函数中创建一个QToolBar对象。 ```cpp QToolBar *toolBar = new QToolBar(this); ``` 4. 自定义工具栏的样式可以通过设置工具栏的背景颜色、按钮的图标等来实现。例如,要设置工具栏的背景颜色,可以使用QPalette类。 ```cpp QPalette palette = toolBar->palette(); palette.setColor(QPalette::Background, Qt::blue); toolBar->setPalette(palette); ``` 5. 设置工具栏的按钮图标可以使用QIcon类。 ```cpp QAction *action = new QAction(QIcon(":/images/icon.png"), "Action", this); toolBar->addAction(action); ``` 6. 将工具栏添加到主窗口中。 ```cpp addToolBar(toolBar); ``` 7. 在Qt的资源文件(.qrc)中添加图标文件。将图标文件拖放到Qt资源编辑器中,并设置资源文件的路径。 8. 在工具栏上添加的按钮可以连接到相应的槽函数,以实现按钮点击后的操作。 这样,通过设置工具栏的背景颜色、按钮的图标等属性,可以自定义工具栏的样式。可以根据需要添加更多的按钮和设置更多的样式。 ### 回答2: Qt的工具栏可以通过自定义样式来修改样式和外观。在Qt中,可以使用QSS(Qt样式表)来改变工具栏的样式。 首先,使用setStyleSheet()方法来给工具栏设置样式表。样式表的语法和CSS非常相似。 例如,可以使用以下代码来设置工具栏的背景颜色: ``` ui->toolBar->setStyleSheet("background-color: red;"); ``` 如果希望在工具栏上使用自定义图标,可以使用QToolButton类的setIcon()方法来设置图标。例如: ``` ui->actionButton->setIcon(QIcon(":/images/icon.png")); ``` 其中,icon.png是图片文件的路径。 除了设置背景颜色和图标外,还可以通过QToolButton类的方法来设置按钮的样式、大小和位置等。例如,可以使用setSizePolicy()方法来设置按钮的大小策略: ``` ui->actionButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); ``` 这样可以将按钮的宽度设置为默认大小,而高度可以随着工具栏的高度而自动调整。 另外,Qt还提供了一些预定义的样式来快速设置工具栏的外观。可以使用QStyleFactory::keys()方法来获取所有可用的样式列表,然后使用setStyle()方法来设置所需的样式。例如: ``` QStringList styles = QStyleFactory::keys(); qDebug() << styles; ``` 这样可以打印出所有可用的样式列表。 总之,Qt可以通过设置样式表、图标和按钮属性来自定义工具栏的样式和外观。使用Qt提供的方法可以很容易地改变工具栏的外观,以满足不同的需求。 ### 回答3: Qt是一个流行的跨平台应用程序开发框架,提供了丰富的UI控件和样式自定义的功能。自定义工具栏样式可以通过使用Qt的样式表来实现。 首先,我们需要创建一个工具栏控件,并将其添加到主窗口或其他父控件中。然后,我们可以使用样式表来定义工具栏的外观和样式,包括背景颜色、字体、图标等。 在样式表中,可以使用选择器来选择工具栏中的不同元素,例如QToolButton、QComboBox等。可以使用属性来设置这些元素的外观和样式,例如background-color、color、font等。 我们还可以使用图片作为工具栏的背景,使用background-image属性来指定背景图片的路径。可以使用background-repeat属性来指定图片是否平铺,使用background-position属性来调整图片的位置。 除了样式表,我们还可以通过子类化工具栏控件来实现自定义样式。通过重写绘制事件,可以在绘制工具栏时自定义其外观。可以调用QStylePainter的绘制方法来绘制工具栏的不同部分,例如工具按钮、标签等。 下面是一个简单的示例,演示了如何使用样式表来自定义工具栏的样式: ```cpp QToolBar *toolbar = new QToolBar(this); ... toolbar->setStyleSheet("QToolButton { background-color: red; color: white; }"); ``` 以上代码将工具栏中的所有工具按钮的背景颜色设置为红色,字体颜色设置为白色。 总之,Qt提供了多种方式来自定义工具栏的样式,包括使用样式表和子类化控件。通过灵活运用这些方法,可以实现丰富多样的工具栏样式效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值