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区域
相关推荐
mengzhi啊4 小时前
Qt Designer UI 界面 拖的两个 QLineEdit,想按 Tab 从第一个跳到第二个
qt
笨笨马甲7 小时前
Qt MQTT
开发语言·qt
姓刘的哦10 小时前
Qt实现蚂蚁线
开发语言·qt
Ivy_belief10 小时前
Qt网络编程实战:从零掌握 QUdpSocket 及 UDP 通信
网络·qt·udp
丁劲犇11 小时前
在Trae Solo模式下用Qt HttpServer和Concurrent升级MCP服务器绘制6G互联网覆盖区域
服务器·开发语言·qt·ai·6g·mcp·trae
笨笨马甲11 小时前
Qt MODBUS协议
开发语言·qt
我喜欢就喜欢11 小时前
Word 模板匹配与样式同步技术详解
开发语言·c++·qt·word·模板匹配
Ronin30513 小时前
【Qt常用控件】容器类控件和布局管理器
开发语言·qt·常用控件·布局管理器·容器类控件
2301_803554521 天前
qt信号槽机制以及底层实现原理
开发语言·qt
笨笨马甲1 天前
Qt 音视频编解码
开发语言·qt