找出QTableWidget中选择了哪一列
Find out which column is selected in a QTableWidget
我有一个QTableWidget, SelectionMode
设置为SingleSelection
, SelectionBehavior
设置为SelectColumns
。这意味着只能选择一个列。
但是我后来需要找出哪一列被选中,我唯一可以使用的函数是selectedIndexes()
或selectedItems()
,两者都返回整个列表,这是浪费。
有没有更有效的方法?
您处理selectedItems()的方法是正确的。由于QT无法知道您已经将小部件设置为单列/列选择,因此它提供了这些函数来返回QList<>
。
在你的情况下,你可以使用.first()
来处理这些
尽管我建议使用信号currentColumnChanged()
在您的应用程序中做出反应
(http://harmattan-dev.nokia.com/docs/library/html/qt4/qitemselectionmodel.html#currentColumnChanged)
你总是可以通过selectionModel()->isColumnSelected()
(http://qt-project.org/doc/qt-4.8/qitemselectionmodel.html#isColumnSelected)
connect(tableWidget, SIGNAL(currentCellChanged(int,int,int,int), this, SLOT(onCellChanged(int,int,int,int)));
void Class::onCellChanged(int curRow, int curCol, int preRow, int preCol)
{
current_Col = curCol;
// curRow, preRow and preCol are unused
}
connect(tableWidget->selectionModel()
, SIGNAL(currentColumnChanged(QModelIndex,QModelIndex))
, SLOT(onColumnChanged(QModelIndex)));
...
void Class::onColumnChanged(const QModelIndex &index)
{
int col = index.column();
}
似乎函数selecteranges()做了我需要的。它返回一个所选范围的列表,但由于它是单列,该列表将只有一个项目(因此它是高效的,不需要创建大列表)。
int column = ui->tableWidget->selectedRanges().front().leftColumn();
currentColumn()返回当前选定列的int值。
相关文章:
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 如何在C++中获取二维数组中最少的一列数?
- 如何允许用户选择何时停止三列中的每一列的旋转
- 从我的2d数组中的一列返回的字符串值被压缩为一个字符串(在Mac os上打开Windows txt文件)
- 在犰狳立方体中添加一列 1 的有效方法
- 在二维向量的每一列中查找最大值
- 只有一列适合其内容大小,而另一列则拉伸
- 如何将单独的数组分组在一起(类似于按一列对表进行排序)
- C++ 最后一列中的直方图错误
- 添加两个矩阵会打印一列垃圾数据 c++
- C 特征:通过参考将矩阵的一列传递到函数中
- 仅制作一列qtreewidget可编辑//故障排除
- 在 QTableView 中仅对一列进行排序,而不对其他列进行排序.独立列
- 按列对CSV文件进行排序,并与C 中的另一列进行比较
- 隔离C 中向量的一列
- 读取数据文件并将每一列分配给各个数组
- 按一列对二维数组进行气泡排序
- 可能的话,将QComboBox映射到MySQL表的一列
- 数据排序依据是哪一列,QTableWidget
- 找出QTableWidget中选择了哪一列