当前位置: 首页 > news >正文

做国外电影网站新网做网站怎么上传

做国外电影网站,新网做网站怎么上传,wordpress 大不开,网站设置万事达u卡qt-C笔记之QSplitter code review! 在 Qt C 中,QSplitter 是一个用于创建可调整大小的分割窗口的控件,允许用户通过拖动分割条(splitter handle)动态调整子控件的大小。QSplitter 常用于创建灵活的布局,比如将界面分割…

qt-C++笔记之QSplitter

在这里插入图片描述

code review!

在 Qt C++ 中,QSplitter 是一个用于创建可调整大小的分割窗口的控件,允许用户通过拖动分割条(splitter handle)动态调整子控件的大小。QSplitter 常用于创建灵活的布局,比如将界面分割成多个可调整大小的区域,类似于文件管理器或 IDE 中的面板布局。

文章目录

  • qt-C++笔记之QSplitter
    • 1. QSplitter 概述
      • 基本信息
    • 2. 主要特性
      • 2.1 分割方向
      • 2.2 子控件管理
      • 2.3 大小策略
      • 2.4 分割条行为
      • 2.5 信号
    • 3. 常用方法
    • 4. 基础示例
      • 代码说明
      • 运行效果
    • 5. 高级用法
      • 5.1 嵌套 QSplitter
      • 运行效果
      • 5.2 保存和恢复布局
    • 6. 注意事项
      • 6.1 子控件管理
      • 6.2 事件处理
      • 6.3 样式定制
    • 7. 常见问题
      • Q:如何让某个子控件不可调整大小?
      • Q:如何禁用分割条的拖动?
      • Q:如何在运行时动态添加或移除子控件?
    • 8. Linux 命令行编译
      • 8.1 创建项目文件
      • 8.2 编译步骤

1. QSplitter 概述

基本信息

  • 头文件#include <QSplitter>
  • 继承自QFrame(因此也间接继承自 QWidget
  • 功能
    • 将窗口分割成多个子区域,每个区域可以包含一个 QWidget(如 QTextEditQTreeView 等)
    • 用户可以通过拖动分割条调整子控件的大小
    • 支持水平(Horizontal)或垂直(Vertical)分割

2. 主要特性

2.1 分割方向

通过 setOrientation() 设置分割方向:

  • Qt::Horizontal:水平分割(子控件左右排列)
  • Qt::Vertical:垂直分割(子控件上下排列)

2.2 子控件管理

  • 使用 addWidget()insertWidget() 添加子控件
  • 子控件会按照添加顺序排列

2.3 大小策略

  • 通过 setSizes() 设置子控件的初始大小
  • 通过 setStretchFactor() 设置子控件的拉伸因子,控制调整大小时的比例

2.4 分割条行为

  • setHandleWidth() 设置分割条的宽度
  • setCollapsible() 控制某个子控件是否可以被完全折叠(最小化到 0)

2.5 信号

  • splitterMoved(int pos, int index):当分割条被移动时发出,pos 是新位置,index 是分割条的索引

3. 常用方法

方法描述
QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr)构造函数,指定分割方向和父控件
addWidget(QWidget *widget)添加一个子控件到分割器
insertWidget(int index, QWidget *widget)在指定索引处插入子控件
setOrientation(Qt::Orientation orientation)设置分割方向(水平或垂直)
setSizes(const QList<int> &list)设置每个子控件的初始大小
setStretchFactor(int index, int stretch)设置指定索引子控件的拉伸因子
setCollapsible(int index, bool collapsible)设置指定索引的子控件是否可折叠
setHandleWidth(int width)设置分割条的宽度
sizes()返回当前子控件的大小列表

4. 基础示例

以下是一个简单的示例,展示如何使用 QSplitter 创建一个包含两个子控件的水平分割窗口:

#include <QApplication>
#include <QSplitter>
#include <QTextEdit>
#include <QMainWindow>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建主窗口QMainWindow window;// 创建 QSplitter,水平方向QSplitter *splitter = new QSplitter(Qt::Horizontal);// 创建两个子控件QTextEdit *textEdit1 = new QTextEdit;textEdit1->setText("左侧文本编辑器");QTextEdit *textEdit2 = new QTextEdit;textEdit2->setText("右侧文本编辑器");// 将子控件添加到 QSplittersplitter->addWidget(textEdit1);splitter->addWidget(textEdit2);// 设置初始大小(可选)splitter->setSizes(QList<int>{200, 400});// 设置第一个子控件不可折叠splitter->setCollapsible(0, false);// 设置分割条宽度splitter->setHandleWidth(10);// 将 QSplitter 设置为主窗口的中央控件window.setCentralWidget(splitter);// 显示窗口window.resize(600, 400);window.show();return app.exec();
}

代码说明

  • 创建一个水平方向的 QSplitter
  • 添加两个 QTextEdit 作为子控件,分别显示在左右两侧
  • 使用 setSizes() 设置初始宽度(左侧 200 像素,右侧 400 像素)
  • 使用 setCollapsible(0, false) 禁止第一个子控件被完全折叠
  • QSplitter 设置为主窗口的中央控件

运行后,用户可以通过拖动分割条调整两个 QTextEdit 的大小。

运行效果

主窗口 (600x400)
左侧文本编辑器
(200px)
|



|
右侧文本编辑器
(400px)

交互说明

  • 鼠标悬停在分割条上时,光标会变成左右调整大小的样式(↔)
  • 按住鼠标左键并拖动分割条,可以实时调整两侧控件的大小
  • 由于设置了 setCollapsible(0, false),左侧控件不能被完全折叠

5. 高级用法

5.1 嵌套 QSplitter

QSplitter 可以嵌套使用,以创建复杂的布局。例如,创建一个垂直分割器,内部包含一个水平分割器:

#include <QApplication>
#include <QSplitter>
#include <QTextEdit>
#include <QMainWindow>int main(int argc, char *argv[]) {QApplication app(argc, argv);QMainWindow window;// 外层垂直分割器QSplitter *verticalSplitter = new QSplitter(Qt::Vertical);// 内层水平分割器QSplitter *horizontalSplitter = new QSplitter(Qt::Horizontal);// 创建子控件QTextEdit *textEdit1 = new QTextEdit("左上");QTextEdit *textEdit2 = new QTextEdit("右上");QTextEdit *textEdit3 = new QTextEdit("底部");// 添加到水平分割器horizontalSplitter->addWidget(textEdit1);horizontalSplitter->addWidget(textEdit2);// 添加到垂直分割器verticalSplitter->addWidget(horizontalSplitter);verticalSplitter->addWidget(textEdit3);// 设置主窗口window.setCentralWidget(verticalSplitter);window.resize(600, 400);window.show();return app.exec();
}

效果:窗口被垂直分割为上下两部分,上部分又被水平分割为左右两部分。

运行效果

主窗口 (600x400)
上部分
━━━━━━━━━━━━━━━━
底部
文本编辑器
左上
文本编辑器
|
右上
文本编辑器

布局特点

  • 垂直分割器将窗口分为上下两部分
  • 上部分包含一个水平分割器,进一步分为左右两个区域
  • 每个分割条都可以独立拖动,灵活调整各区域大小
  • 这种嵌套结构可以创建复杂的多面板布局

5.2 保存和恢复布局

可以使用 saveState()restoreState() 保存和恢复 QSplitter 的布局状态:

// 保存布局
QByteArray state = splitter->saveState();// 恢复布局
splitter->restoreState(state);

这在需要持久化用户界面布局时非常有用(例如,保存到配置文件)。

6. 注意事项

6.1 子控件管理

  • 添加到 QSplitter 的子控件由 QSplitter 管理,无需手动删除
  • 可以通过 setMinimumSize()setMaximumSize() 为子控件设置大小限制

6.2 事件处理

如果需要响应分割条的移动,可以连接 splitterMoved 信号

6.3 样式定制

分割条的外观可以通过 Qt 样式表(QSS)自定义,例如:

QSplitter::handle {background: gray;width: 10px;
}

7. 常见问题

Q:如何让某个子控件不可调整大小?

使用 setStretchFactor() 设置其他控件的拉伸因子为 0,或者通过 setFixedSize() 限制子控件大小。

Q:如何禁用分割条的拖动?

使用 setEnabled(false) 禁用整个 QSplitter,但这会禁用所有交互。更好的方法是为子控件设置固定大小。

Q:如何在运行时动态添加或移除子控件?

使用 addWidget()insertWidget() 动态添加控件;通过 deleteremoveWidget()(需要自定义)移除控件。

8. Linux 命令行编译

要在 Linux 环境下通过命令行编译上述使用 Qt C++ 和 QSplitter 的程序,需要确保已安装 Qt 开发环境,并使用 qmake 和 make 工具进行编译。以下是详细步骤,假设你的代码保存在 main.cpp 文件中。

8.1 创建项目文件

创建 splitter.pro 文件:

QT += core gui widgets
TARGET = splitter
TEMPLATE = app
SOURCES += main.cpp

8.2 编译步骤

# 生成 Makefile
qmake splitter.pro# 编译程序
make# 运行程序
./splitter
http://www.dtcms.com/a/583776.html

相关文章:

  • 2_ 如何写一份详细的网站开发方案php网站开发权限管理
  • 东莞市手机网站建设多少钱深圳宣传片制作排名前十名
  • 禹城网站制作网站浏览器兼容性通用
  • 做网站和做阿里巴巴辽宁网站开发
  • auto 自动类型推导以及注意事项
  • 网站开发形成收入怎么做帐常州公司网站模板建站
  • 综合网页设计电商网站优化方案
  • 做推广哪家网站好做网站可以盈利吗
  • seo网站优化系统下载班级优化大师并安装
  • 3.4、Python-集合
  • 建设家具网站的目的及功能定位淘宝页面设计模板
  • 免费 个人 网站网站开发及技术
  • 网站建设与开发定制大学生asp网站开发的实训周
  • 运城盐湖区姚孟信通网站开发中心机机票网站建设
  • 【Java SE 基础学习打卡】03 计算机中数据的表示、存储与处理
  • 优质专业建设申报网站wordpress建站平台
  • 通辽网站建设tlyltd网站建设有趣小游戏
  • 徐州地区网站建设12306网站建设团队
  • 樱桃电视剧西瓜视频在线观看长沙网站seo收费标准
  • 亚马逊seo什么意思百度seo技术优化
  • 浏览器无法打开住房和建设网站最近国内重大新闻事件
  • 如何搭建自己的网站平台厦门市住房和城乡建设局网站
  • 以下属于网站的管理 更新 维护主页网址
  • 深圳快速网站制作哪家公司好制作网站的专业公司哪家好
  • 网站建设入账时进那个会计科目成都旅游公司哪家好
  • 建设手机网站的公司北京十大代理记账公司
  • 做网站需要哪些程序员石家庄做网站的口碑好
  • 问卷考试系统—测试报告
  • 关键词挖掘查询工具爱站网广东微信网站制作公司
  • 天长网站建设天长ui界面设计风格