主要实现悬浮窗口的左右移动,QTreeWidget子项信号的使用 ,以及菜单栏与状态栏的使用。

一、效果图展示



二、主要代码

mainwindow.h

public:int m_time;QLabel* m_label;QMenuBar *m_pbar;QMenu *m_menu;QToolBar* m_toolbar;QStatusBar* m_statuBar;QTreeWidget* m_treeWidget;public:void createMeenu();void init();void setTreeWidget();void createTree();void upDateTime();void createStatuBar();void addChildTree(QTreeWidgetItem* parentItem,int num);void timerEvent(QTimerEvent *);
public slots:void setClorSlot(QTreeWidgetItem* parentItem, int num);

mainwindow.cpp

void MainWindow::init()
{//设置为左右悬浮ui->m_dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);ui->m_dockWidget->setStyleSheet("QDockWidget > QWidget {\nborder: 10px solid rgb(245,245,245);\n};");//设置标题ui->m_dockWidget->setWindowTitle("Dock Widet");//设置窗口不可关闭ui->m_dockWidget->setFeatures(QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable);/*去掉标题栏,悬浮窗不能移动*/
//    QWidget *_titleWidget = new QWidget(this);
//    ui->m_dockWidget->setTitleBarWidget(_titleWidget);createMeenu();createTree();createStatuBar();connect(m_treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int )),this, SLOT(setClorSlot(QTreeWidgetItem* , int )));}void MainWindow::createMeenu()
{m_pbar = new QMenuBar(this);m_pbar->setStyleSheet(" QMenuBar {\background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,\stop:0 lightgray, stop:1 rgb(245,245,245));\}");this->setMenuBar(m_pbar);m_menu = new QMenu(QString::fromLocal8Bit("文件"));m_pbar->addMenu(m_menu);
}void MainWindow::setTreeWidget()
{//设置表头m_treeWidget->setHeaderLabel(QString::fromLocal8Bit("章节"));//设置表头居中m_treeWidget->headerItem()->setTextAlignment(0, Qt::AlignHCenter);m_treeWidget->setStyleSheet("QHeaderView::section{background:rgb(245,245,245);}");QTreeWidgetItem* parentItem;//一级节点for (int i = 0; i < 3; i++){parentItem = new QTreeWidgetItem(m_treeWidget);switch (i){case 0:parentItem->setText(0, QString::fromLocal8Bit("一章节"));break;case 1:parentItem->setText(0, QString::fromLocal8Bit("二章节"));break;case 2:parentItem->setText(0, QString::fromLocal8Bit("三章节"));break;default:break;}addChildTree(parentItem,i);      }
}void MainWindow::addChildTree(QTreeWidgetItem* parentItem, int num)
{QString text;text = QString::number(num + 1, 10) + ".1";QTreeWidgetItem* childTree =  new QTreeWidgetItem(parentItem);childTree->setText(0, text);m_treeWidget->setCurrentItem(parentItem);
}void MainWindow::timerEvent(QTimerEvent *e)
{qint32 timerId = e->timerId();if (timerId == m_time){QTime tmCur = QTime::currentTime();QString str = tmCur.toString("hh:mm:ss.zzz");m_label->setText(str);}
}void MainWindow::createTree()
{m_treeWidget = new QTreeWidget(ui->m_dockWidget);//设置显示控件为QTreeWidgetui->m_dockWidget->setWidget(m_treeWidget);setTreeWidget();
}void MainWindow::upDateTime()
{char str[128];time_t t;time(&t);tm * ltm = localtime(&t);sprintf(str, "%02d:%02d:%02d", ltm->tm_hour, ltm->tm_min, ltm->tm_sec);//状态栏显示时间m_label->setText(QString::fromLocal8Bit(str));}void MainWindow::createStatuBar()
{m_statuBar = new QStatusBar(this);m_statuBar->setStyleSheet(" QStatusBar {background-color:rgb(220,220,220));}");setStatusBar(m_statuBar);m_label = new QLabel(statusBar());m_label->setFrameStyle(QFrame::Panel | QFrame::Sunken);m_label->setAlignment(Qt::AlignCenter);m_label->setFixedWidth(120);m_time = startTimer(100);upDateTime();
}void MainWindow::setClorSlot(QTreeWidgetItem* parentItem, int num)
{if (NULL == parentItem->parent()){return;}if (QString::fromLocal8Bit("一章节") == parentItem->parent()->text(0)){ui->m_textEdit->setStyleSheet("background-color: rgb(85, 255, 0);}");}else if (QString::fromLocal8Bit("二章节") == parentItem->parent()->text(0)){ui->m_textEdit->setStyleSheet("background-color: rgb(245, 245, 245);}");}else{ui->m_textEdit->setStyleSheet("background-color: rgb(0, 0, 255);}");}
}

记录学习,后期还会继续完善功能

QT QTreeWidget与QDockWidget的使用相关推荐

  1. QT常见界面设计组件——QTreeWidget和QDockWidget

    实例概述 此实例主要介绍QTreeWidget.QDockWidget的使用,以及用QLabel显示图片的方法,实例主要使用QTreeWidget,创建一个照片管理器,实例运行界面效果如下: 此实例的 ...

  2. QT QTreeWidget 行切换时改变背景色

    文章目录 QT QTreeWidget 行切换时改变背景色 1.关联信号槽. 2.写信号槽函数: QT QTreeWidget 行切换时改变背景色 1.关联信号槽. 当QtreeWidget 的选中状 ...

  3. Qt QTreeWidget/QTreeView去焦点(虚线框)

    Qt QTreeWidget/QTreeView去焦点(虚线框) QTreeWidget与QTreeView选中后会出现虚线框,也就是焦点. 解决方法一: QTreeView->setStyle ...

  4. 带复选框和简单描述的Qt QTreeWidget树形控件的简单使用

    Qt QTreeWidget树形控件的简单使用 具有选择框的树形控件 具有选择框的树形控件 效果:当选中顶层的树形节点时,子节点全部被选中:当取消选中顶层树形节点时,子节点全部被取消:当选中子节点时, ...

  5. Qt 停靠布局QDockWidget使用

    基本使用 QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持浮动状态或在指定位置作为子窗口附加到主窗口中.停靠窗口QDockWidget类是应用程序中经常用到的,设置 ...

  6. Qt Widgets 之 QDockWidget(停靠窗口)

    目录 什么是停靠窗口 如何添加停靠窗口 QDockWidget::setWidget() QMainWindow::addDockWidget() 设置停靠选项 (Options) AnimatedD ...

  7. qt qtreewidget 设置 值_QTreeWidget

    QTreeWidget 前段时间笔记本坏掉了,一直没有更新博客,现在终于修好了啊,还是来继续<Qt 学习之路>这个系列吧! 接着前面的内容,今天要说的是另外一个 item view cla ...

  8. Qt QTreeWidget 详解

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 主要API 示例 1.头文件: 2.实现文件 二.源码下载 前言 官方文档 QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与 ...

  9. Qt --- QTreeWidget 树形控件实例遇到的问题

    文章目录 说明 代码 widget.h widget.c 源码下载 遇到的问题 解决方式1 解决方式2 操作后的显示 说明 环境 Qt软件版本 : 5.9.9 实例参考书籍 : Qt5开发及实例 陆文 ...

最新文章

  1. IDEA 2021.3 正式发布:支持远程开发、故障排查、Java和Spring等多项优化改进
  2. 2011年GALGAME不朽巨作推荐
  3. C++源码的调用图生成
  4. nginx.config widows 简单配置存储
  5. linux7怎么安装yum,centos7下怎么安装yum
  6. 如何快速解剖数据背后隐藏的信息
  7. Java8————Stream API
  8. Python Flask服务同时接收单个、多个上传的文件
  9. centos6.5安装Chrome
  10. 新的“钉子户”来了!一加9RT将于10月13日正式亮相
  11. Linux下source命令
  12. MyEclipse 2015 运行tomcat 内存溢出的解决方法
  13. python_射门小游戏
  14. ubuntu lamp环境(阿里云搭建lamp)
  15. 【三维路径规划】基于matlab粒子群算法无人机山地三维路径规划【含Matlab源码 1405期】
  16. EasyTouch5虚拟摇杆(Joystick)中文解析
  17. 编辑邮件时去掉回车光标跟随
  18. 管理培训决定企业生死的5个层面
  19. 湖南师范大学2018年大学生程序设计竞赛新生赛小名的回答
  20. 网易互娱在线编程纪要

热门文章

  1. 滴滴 App 质量优化黑科技,都做了什么
  2. UVA12412 A Typical Homework (a.k.a 师兄帮帮忙) 题解
  3. 台式计算机一般多大功率,台式机一般要用多少瓦的电源?
  4. 四川麻将AI接口说明
  5. 小学计算机第二课堂内容,小学第二课堂活动实施方案
  6. 选题:基于SSM框架实现汽车配件商城系统
  7. Photoshop脚本 高反差保留滤镜的使用
  8. 无线定位原理:TOA AOA
  9. 图解计算机结构与体系分类!!
  10. 时间都去哪了-移动Web首屏优化实践