Qt第十一章 其他控件

其他控件

文章目录

按钮组

  1. 命令链接按钮

  2. 对话框按钮盒子

    添加基础按钮

    改变排列方向

项目小部件

  1. 列表控件List Widget

    也可以通过代码添加
c 复制代码
    // 添加
    ui->listWidget->addItem("你好啊");
    ui->listWidget->addItem(new QListWidgetItem("heelo"));
    auto item1 = new QListWidgetItem("插入项");
    ui->listWidget->insertItem(2, item1); // 在第二行插入
    qDebug() << ui->listWidget->count(); // 获取有多少个项
    ui->listWidget->takeItem(0); // 移除第0行,但原指针还在,要彻底删除要调用delete
  1. 树控件Tree Widget

    通过代码实现改变
c 复制代码
    ui->treeWidget->setColumnCount(5); // 设置成5列
    ui->treeWidget->setHeaderLabels(QStringList() << "名称"
                                                  << "修改日期"
                                                  << "类型"
                                                  << "大小"
                                                  << "所属组"); // 设置标题
    auto rootItem = new QTreeWidgetItem(QStringList() << "E盘"
                                                      << "2024-3-4"
                                                      << "磁盘"
                                                      << "1323"); // 定义一个项目
    ui->treeWidget->addTopLevelItem(rootItem); // 增加一个根项目
    rootItem->addChild(new QTreeWidgetItem(QStringList() << "学习资料")); // 在当前根下面添加子项目
    ui->treeWidget->takeTopLevelItem(1); // 移除第2个根项目,伪删除
    rootItem->takeChild(0); // 删除子项目
    ui->treeWidget->setCurrentItem(ui->treeWidget->topLevelItem(0), 0, QItemSelectionModel::Select); // 默认选中第1个根的第0列
    ui->treeWidget->setSortingEnabled(true); // 启用排序,默认降序    
  1. 表格控件Table Widget
c 复制代码
    qDebug() << "行数" << ui->tableWidget->rowCount() << "列数" << ui->tableWidget->columnCount();
    auto tableItem = new QTableWidgetItem("你好啊");
    ui->tableWidget->setItem(0, 0, tableItem); // 在第0行第0列设置元素
    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "名字"); // 设置列标签
    ui->tableWidget->setVerticalHeaderLabels(QStringList() << "姓名"); // 设置行标签
    ui->tableWidget->setEditTriggers(QTableWidget::DoubleClicked); // 设置鼠标双击才能编辑
    ui->tableWidget->takeItem(0, 1); // 删除第1行,第2列
    ui->tableWidget->takeHorizontalHeaderItem(0); // 删除第1列标签

输入控件

  1. 文本编辑器

    文本框手动插入图片
c 复制代码
    // 手动插入图片
    QString path = QFileDialog::getOpenFileName();
    if (path.isNull())
        return;
    QImage img = QImageReader(path).read(); // 获取选择地址的图片
    QUrl url = path;
    ui->textEdit->document()->addResource(QTextDocument::ImageResource, url, img);
    QTextImageFormat imgfmt;
    imgfmt.setName(url.toString());
    imgfmt.setWidth(100);
    imgfmt.setHeight(120);
    ui->textEdit->textCursor().insertImage(img); // 在光标位置插入图片
  1. 纯文本编辑器
  2. 旋转盒(微调框)

c 复制代码
 	ui->spinBox->setRange(0, 100); // 设置范围
    ui->spinBox->setSuffix("厘米"); // 设置后缀
    ui->timeEdit->setMaximumTime(QTime(12, 1, 1)); // 设置最大时间,12点1分1秒
    ui->dateEdit->setMaximumDate(QDate(2025, 12, 1)); // 设置最大日期,2025年12月1日
    ui->dateTimeEdit->setMaximumDateTime(QDateTime(QDate(2025, 12, 1), QTime(12, 1, 1)));
    ui->timeEdit->setDisplayFormat("hh:mm:ss"); // 设置时间显示格式,例如04:01:15
    ui->dateTimeEdit->setCalendarPopup(true); // 设置日历弹出,会有个下拉箭头,点一下弹出日历
  1. 刻度盘
c 复制代码
    ui->dial->setRange(50, 100);
    ui->dial->setNotchesVisible(true); // 显示周围刻度
    ui->dial->setSingleStep(5); // 设置步长
    ui->dial->setWrapping(true); // 设置环绕,如果是false,就不能在范围之外转了,默认false
    //连接槽
	void Widget::on_dial_valueChanged(int value)
	{
	    qDebug() << "刻度盘:" << value;
	}
  1. 滑动条

    连接槽
c 复制代码
void Widget::on_horizontalScrollBar_valueChanged(int value)
{
    ui->dial->move(value, ui->dial->geometry().y());//让刻度盘跟着滑动条滑动
}
  1. 滑块

    类似于滑动条

7.键序列编辑器

c 复制代码
void Widget::on_keySequenceEdit_editingFinished()
{
    qDebug() << "这是快捷键";
}

void Widget::on_pushButton_clicked()
{
    ui->keySequenceEdit->clear(); // 按下旁边新建的按钮,清除当前快捷键
}

显示控件

  1. 文本浏览器textBrowser

只能浏览,不能改变

继承自QTextEdit

c 复制代码
ui->textBrowser->setSource(QUrl("qrc:/example.html"));
  1. 日历
  2. LCD数码管
c 复制代码
    ui->lcdNumber->setDigitCount(10); // 设置显示位数
    ui->lcdNumber->display("123.123"); // 如果之前不设置显示位数,默认显示是3.123
  1. 进度条

容器

  1. 组框
  2. 滚动区域
  3. 工具箱
  4. 选项卡
  5. 栈控件
  6. MDI区域
相关推荐
重生之我是数学王子1 小时前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
----云烟----10 小时前
QT中QString类的各种使用
开发语言·qt
「QT(C++)开发工程师」16 小时前
【qt版本概述】
开发语言·qt
一路冰雨20 小时前
Qt打开文件对话框选择文件之后弹出两次
开发语言·qt
老赵的博客20 小时前
QT 自定义界面布局要诀
开发语言·qt
码码哈哈0.021 小时前
VSCode 2022 离线安装插件QT VSTOOl报错此扩展不能安装在任何当前安装的产品上。
ide·vscode·qt
feiyangqingyun1 天前
Qt/C++离线地图的加载和交互/可以离线使用/百度和天地图离线/支持手机上运行
c++·qt·qt天地图·qt离线地图·qt地图导航
gz94562 天前
windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...
开发语言·qt
「QT(C++)开发工程师」2 天前
Ubuntu 26.04 LTS 大升级:Qt 6 成为未来新引擎
qt
兆。2 天前
python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具
爬虫·python·qt