自学内容网 自学内容网

QT-column小节一下

在C++语法里面

在 Qt 框架中,"column"(列)这一术语主要与表格相关的控件紧密相关。

  1. 这些控件,例如 QTableWidget 和 QTableView,通常被用于以二维表格的形式展示数据。在这样的上下文中,"column" 指的是表格中的垂直数据列
  2. 而与之对应的 "row"(行)则指的是水平数据行。

1. QTableWidget

QTableWidget 是一个方便的表格控件,用于显示二维数据。你可以通过 column 方法来引用和操作特定的列。

获取和设置列宽

QTableWidget *tableWidget = new QTableWidget(5, 3); // 创建一个 5 行 3 列的表格

// 设置第一列的宽度为 100

tableWidget->setColumnWidth(0, 100);

// 获取第一列的宽度

int columnWidth = tableWidget->columnWidth(0);

 

在特定列中插入数据
// 在第一行第一列插入数据
tableWidget->setItem(0, 0, new QTableWidgetItem("Data 1,1"));
// 在第二行第二列插入数据
tableWidget->setItem(1, 1, new QTableWidgetItem("Data 2,2"));

 

2. QTableView 与 QStandardItemModel

QTableView 是一个更灵活的表格视图控件,它通常与 QAbstractItemModel 派生类(如 QStandardItemModel)一起使用,以提供数据。

设置 QStandardItemModel 并使用 QTableView 显示
QTableView *tableView = new QTableView;
QStandardItemModel *model = new QStandardItemModel(5, 3); // 创建一个 5 行 3 列的模型
// 设置模型
tableView->setModel(model);
// 在第一行第一列插入数据
model->setItem(0, 0, new QStandardItem("Data 1,1"));
// 在第二行第二列插入数据
model->setItem(1, 1, new QStandardItem("Data 2,2"));
// 设置第一列的标题
model->setHeaderData(0, Qt::Horizontal, "Column 1");

 

3. 列的选择和操作

Qt 提供了多种方法来选择和操作列,包括选择列、隐藏列、移动列等。

隐藏列
// 隐藏第一列
tableWidget->hideColumn(0);
// 或者在 QTableView 中
model->removeColumn(0); // 注意,这将从模型中移除列,而不是仅仅隐藏它

 

选择列(QItemSelection)
QItemSelection selection(model->index(0, 0), model->index(4, 0)); // 选择第一列的所有行
tableView->selectionModel()->select(selection, QItemSelectionModel::Select);

 

4. 信号和槽

Qt 还提供了多种信号,用于在列发生变化时通知开发者。例如,QTableView 的 QHeaderView 提供了 sectionResizedsectionClicked 等信号。

connect(tableView->horizontalHeader(), &QHeaderView::sectionResized, this, &YourClass::onColumnResized);
// 槽函数
void YourClass::onColumnResized(int logicalIndex, int oldSize, int newSize) {
qDebug() << "Column" << logicalIndex << "resized from" << oldSize << "to" << newSize;
}

这些示例展示了如何在 Qt 中使用 column 相关的方法和信号来操作表格视图中的数据。根据你的具体需求,你可以进一步定制和扩展这些功能。

在 Qt 框架中,"column"(列)这一术语主要与表格相关的控件紧密相关。这些控件,例如 QTableWidget 和 QTableView,通常被用于以二维表格的形式展示数据。在这样的上下文中,"column" 指的是表格中的垂直数据列,而与之对应的 "row"(行)则指的是水平数据行。

QML中

在 Qt QML(Qt Quick Markup Language)中,Column 是一种布局元素,它用于将其子元素垂直排列成一列。这种布局方式非常适合在不使用锚点(anchors)的情况下,快速且直观地组织界面元素。

Column 的基本用法

  • 垂直排列Column 会自动将其子元素垂直布局,因此你不需要为子元素设置 Y 位置或使用如 topbottomanchors.verticalCenterfill 或 centerIn 等锚点属性。
  • 间距和填充:你可以使用 spacing 属性来设置 Column 内部元素之间的间隔,以及使用 padding 属性(或更具体的 leftPaddingtopPaddingrightPadding 和 bottomPadding)来设置子元素周围的空白区域。
  • 过渡效果Column 支持通过 Transition 或 NumberAnimation 等属性为添加、移除或重新排列子元素时设置动画效果。
import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 200
    height: 200
    Column {
        spacing: 10
        Rectangle {
        color: "red"
        width: 50
        height: 50
        }
        Rectangle {
        color: "green"
        width: 50
        height: 50
        }
        Rectangle {
        color: "blue"
        width: 50
        height: 50
        }
    }
}

三个矩形被垂直排列在一个 Column 中,它们之间的间隔设置为 10 像素。

注意事项

  • 如果 Column 中的某个子元素的 visible 属性为 false,或者其宽度或高度为 0,则该元素将不会被布局,因此在 Column 中将不可见。
  • Column 自动处理子元素的垂直布局,因此不应该为子元素设置 Y 位置或使用锚点属性来进行垂直定位。

原文地址:https://blog.csdn.net/m0_63052064/article/details/143673540

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!