QT QTreeWidget与QDockWidget的使用
主要实现悬浮窗口的左右移动,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的使用相关推荐
- QT常见界面设计组件——QTreeWidget和QDockWidget
实例概述 此实例主要介绍QTreeWidget.QDockWidget的使用,以及用QLabel显示图片的方法,实例主要使用QTreeWidget,创建一个照片管理器,实例运行界面效果如下: 此实例的 ...
- QT QTreeWidget 行切换时改变背景色
文章目录 QT QTreeWidget 行切换时改变背景色 1.关联信号槽. 2.写信号槽函数: QT QTreeWidget 行切换时改变背景色 1.关联信号槽. 当QtreeWidget 的选中状 ...
- Qt QTreeWidget/QTreeView去焦点(虚线框)
Qt QTreeWidget/QTreeView去焦点(虚线框) QTreeWidget与QTreeView选中后会出现虚线框,也就是焦点. 解决方法一: QTreeView->setStyle ...
- 带复选框和简单描述的Qt QTreeWidget树形控件的简单使用
Qt QTreeWidget树形控件的简单使用 具有选择框的树形控件 具有选择框的树形控件 效果:当选中顶层的树形节点时,子节点全部被选中:当取消选中顶层树形节点时,子节点全部被取消:当选中子节点时, ...
- Qt 停靠布局QDockWidget使用
基本使用 QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持浮动状态或在指定位置作为子窗口附加到主窗口中.停靠窗口QDockWidget类是应用程序中经常用到的,设置 ...
- Qt Widgets 之 QDockWidget(停靠窗口)
目录 什么是停靠窗口 如何添加停靠窗口 QDockWidget::setWidget() QMainWindow::addDockWidget() 设置停靠选项 (Options) AnimatedD ...
- qt qtreewidget 设置 值_QTreeWidget
QTreeWidget 前段时间笔记本坏掉了,一直没有更新博客,现在终于修好了啊,还是来继续<Qt 学习之路>这个系列吧! 接着前面的内容,今天要说的是另外一个 item view cla ...
- Qt QTreeWidget 详解
Qt系列文章目录 文章目录 Qt系列文章目录 前言 主要API 示例 1.头文件: 2.实现文件 二.源码下载 前言 官方文档 QTreeWidget类是一个方便的类,它提供了一个标准tree小部件与 ...
- Qt --- QTreeWidget 树形控件实例遇到的问题
文章目录 说明 代码 widget.h widget.c 源码下载 遇到的问题 解决方式1 解决方式2 操作后的显示 说明 环境 Qt软件版本 : 5.9.9 实例参考书籍 : Qt5开发及实例 陆文 ...
最新文章
- IDEA 2021.3 正式发布:支持远程开发、故障排查、Java和Spring等多项优化改进
- 2011年GALGAME不朽巨作推荐
- C++源码的调用图生成
- nginx.config widows 简单配置存储
- linux7怎么安装yum,centos7下怎么安装yum
- 如何快速解剖数据背后隐藏的信息
- Java8————Stream API
- Python Flask服务同时接收单个、多个上传的文件
- centos6.5安装Chrome
- 新的“钉子户”来了!一加9RT将于10月13日正式亮相
- Linux下source命令
- MyEclipse 2015 运行tomcat 内存溢出的解决方法
- python_射门小游戏
- ubuntu lamp环境(阿里云搭建lamp)
- 【三维路径规划】基于matlab粒子群算法无人机山地三维路径规划【含Matlab源码 1405期】
- EasyTouch5虚拟摇杆(Joystick)中文解析
- 编辑邮件时去掉回车光标跟随
- 管理培训决定企业生死的5个层面
- 湖南师范大学2018年大学生程序设计竞赛新生赛小名的回答
- 网易互娱在线编程纪要