1. 程式人生 > >QTableWidget獲取遊標所在行號和列號的正確姿勢

QTableWidget獲取遊標所在行號和列號的正確姿勢

最近筆者在專案開發過程中需要獲取QTableWidget的游標位置,琢磨了一段時間,拿出來和大家分享一下。

1.先說正確的姿勢:

connect(this, &QTableWidget::itemSelectionChanged, [=]()
{
    qDebug() << "row = " << currentRow();
    qDebug() << "column = " << currentColumn();
});

PS:如果setCellWidget(int row, int column, QWidget *widget)之後游標上下左右移動不正常(如setCellWidget(2, 3, new QPushButton)),可以試著將QPushButton的聚焦策略改為Qt::NoFocus;

2.錯誤的姿勢:

#if true
void TableWidget::keyPressEvent(QKeyEvent *event) 
{
    qDebug() << "row = " << currentRow();
    qDebug() << "column = " << currentColumn();
    QTableWidget::keyPressEvent(event);
}

void TableWidget::mouseReleaseEvent(QMouseEvent *event) 
{
    qDebug() << "row = " << currentRow();
    qDebug() << "column = " << currentColumn();
    QTableWidget::mouseReleaseEvent(event);
}
#endif

#if true
void TableWidget::keyPressEvent(QKeyEvent *event)
{
    qDebug() << "row = " << moveCursor(QAbstractItemView::MoveRight, Qt::KeyboardModifierMask).row();
    qDebug() << "column = " << moveCursor(QAbstractItemView::MoveRight, Qt::KeyboardModifierMask).column();
    QTableWidget::keyPressEvent(event);
}

void TableWidget::mouseReleaseEvent(QMouseEvent *event)
{
    qDebug() << "row = " << moveCursor(QAbstractItemView::MoveRight, Qt::KeyboardModifierMask).row();
    qDebug() << "column = " << moveCursor(QAbstractItemView::MoveRight, Qt::KeyboardModifierMask).column();
    QTableWidget::mouseReleaseEvent(event);
}
#endif

PS:單元格座標到邊界位置會出現異常,引以為戒;

相關推薦

QTableWidget獲取遊標在行正確姿勢

最近筆者在專案開發過程中需要獲取QTableWidget的游標位置,琢磨了一段時間,拿出來和大家分享一下。 1.先說正確的姿勢: connect(this, &QTableWidget::i

C#獲取陣列的

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test02 {     class Program     {        

獲取ResultSet的

獲取ResultSet行數時需要使用可回滾的遊標,自定義方法,獲取行數後要回滾,獲取ResultSet列數時通過ResultSetMetaData類的getColumnCount方法即可獲得。 示例程式碼: publicclass Test ...{    publicsta

DataGridview 獲得當前單元格的.

        private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)         {  

如何獲取ResultSet的

當我們執行資料庫查詢返回一個ResultSet的時候,很多情況下我們需要知道這個ResultSet的大小,即它的行數和列數。我們知道它的列數可以通過resultSet.getMetaData().getColumnCount()很容易地得到,然而,java API沒有提供直接訪問ResultSet行數的介面

Java 數組 獲取二維數組的

怎樣 tps lan 個數 元素 mil family 資料 object   對於Object[][] array,array.length返回行數,array[0].length返回列數,元素個數為array.length*array[0].length。   參考

js獲取table的表格中某一行某一的內容

table的id=“tab” 一、獲取table的行數 var count=document.getElementById("tab").rows.length; 二、獲取第i行第j列的內容(方式不止三種,根據實際情況選擇,比較推薦方式一) 方式一: var title=tab.rows

C#中如何獲取一個二維陣列的兩維長度,即數?

int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定義一個3行3列的二維陣列 int row = array.Rank;//獲取行數 int col = array.GetLength(1);//獲取指定維中的元 個

獲取SQL查詢結果集中的

轉自http://cheneyph.iteye.com/blog/477829 在Java中,獲得ResultSet的總行數的方法有以下幾種。 第一種:利用ResultSet的getRow方法來獲得ResultSet的總行數 Statement stmt = con.cre

android獲取當前軟件版本版本名稱

.get 軟件 版本 exceptio ctx ica blog found 版本號 <span style="font-size:18px;">/** * 獲取本地軟件版本號 */ public stati

C#中二維數組的

取數 word 二維數組 同學 定義 dimen 行數 nbsp col 最近在項目中用到二維數組,需要獲取數組的行數和列數,本以為是很簡單的一些東西,卻發現網上好多答案都是錯誤的,遂寫下隨筆,希望之後有用到的同學們能夠順利解決答案。 下面是一些關於數組的一些屬性和方法以及

VBA取得EXCEL表格中的

VBA取得EXCEL表格中的行數和列數       初學EXCEL巨集的童鞋,總是很想知道表格中含有資料的行數和列數,尤其是行數和列數不確定的情況下。這樣可以避免很多的錯誤,並且可以提高效率。但每次用到的時候到網上查詢時,總是給了很多無用的答案,往往找不到想要的

線性代數之——影象影象

1. 線性方程組的幾何解釋 線性代數的中心問題就是解決一個方程組,這些方程都是線性的,也就是未知數都是乘以一個數字的。 \[\begin{alignedat}{2} &x \space- \space&2&y \space=\space 1 \\ 3&x\space+\sp

儲存儲存

列儲存的資料庫更適合OLAP 行儲存的資料庫更適合OLTP 所謂的快只是針對於進行olap操作而言 我們知道,資料在儲存中的基本單位為頁,這也是進行資料讀取時候基本單位,一次讀取就是一次IO操作 以sql server為例,一個數據頁大小為8K,資料頁中儲存的是資料,資料是連續儲存的 那麼我假設如下的

openpyxl設定單元格大小(寬)

本文主要討論 openpyxl如何設定(調整)單元格大小(行高和列寬),其他功能可參考:Python3 進行讀取、修改和寫Excel表格(.xlsx檔案)的常用功能示例 https://blog.csdn.net/COCO56/article/details/84403107 示例程式碼

VS 計算二維陣列的

對於一個二維陣列如: int a[2][5]; 求陣列元素的總數: sizeof(a) / sizeof(int) 而陣列行數則為 :( sizeof(a) / sizeof(int) )/ ( sizeof(a[0]) / sizeof(int) ) 求陣列列數: si

圖形學中的矩陣矩陣

什麼是列矩陣? 比如M(x,y)表示取出矩陣的x行y列元素,那麼對於一個4x4的齊次矩陣K來說,如果它的位置分向量為T(下標索引從0開始計,一個矩陣有旋轉分量和位置分量),則T為T=Vec3(K(0,3

指標指標詳解

主要指二維陣列 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; 換個角度看世界: 如首行一樣,將首行視為一個元素,一個特殊的元素,這個“特殊的”元素是一個一維陣列。那麼這個二維陣列是由是由三個“特殊的”元素組成的

C:關於指標作函式引數時求矩陣轉置的思考(對比指標指標)

行指標 實質 實質是將每一行看成一個元素,即原本矩陣的“形狀”是不變的。 如一個33的矩陣 1|2|3 4|5|6 7|8|9 儲存在一個44的、被初始化為0矩陣中為: 1|2|3|0 4|5|6|0 7|8|9|0 0|0|0|0 表示 p[i][j] <

指標指標的理解

指標與二維陣列 int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; 我們以為,二維陣列的儲存形式是: 但是,二維陣列實際上是以一維陣列為單位連續儲存的。 這樣,上述的二維陣列就可以看成是“特殊的”一維陣列了。 而陣列名a是