QTableWidget行選中/刪除/添加行

1  均分各列函數

 tableWidget->horizontalHeader()->setStretchLastSection(true); //就是這個地方
 tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
2   整行選中:ui

tableWidget->setSelectionBehavior ( QAbstractItemView::SelectRows); //設置選擇行爲,以行爲單位
tableWidget->setSelectionMode ( QAbstractItemView::SingleSelection); //設置選擇模式,選擇單行this

3  刪除選中的整行rem

 int rowIndex = m_pAttrbuteList->currentRow();
 if (rowIndex != -1)
     tableWidget->removeRow(rowIndex);字符串


        爲了將數據可以在界面中顯示的更清楚一些,在這裏應用到了tableWidget控件,現將該控件中刪除指定行的代碼介紹以下:get

   QTable裏有一個removeRow(int i)函數用來刪除當前行,可是若是咱們沒有對於table進行任何的選中,那麼QTable是如何返回的呢?
 用Qt Creator裏拖了一個tableWidget,加一個按鈕,點擊刪除後執行
 int i = ui->tableWidget->currentRow();
 QMessageBox msg;
 msg.setText(QString::number(i));
 msg.exec();
 ui->tableWidget->removeRow(i);
 在不選擇行的狀況下發現每次點擊後刪除的都是第一行,i的輸出都是0.it


       緣由其實很簡單,就是由於table的當前焦點在第同樣的第一個單元格所致使的,解決的辦法就是讓table失去焦點,在構造函數裏面添加ui->tableWidget->setFocusPolicy(Qt::NoFocus);
而後再試,發現點擊刪除按鈕若是不選中行的話是不能刪除的,返回的i此時是-1。io

控件剛開始的時候左邊默認自帶序列號,若是想去掉左邊的行號,加上下面的代碼就能夠了。table

      QHeaderView* headerView = table的名字->verticalHeader();
      headerView->setHidden(true);ast

 

4 添加整行

int rowIndex = m_pAttrbuteList->rowCount();
 tableWidget->setRowCount(rowIndex + 1);//總行數增長1

 tableWidget->setRowHeight(rowIndex, 24);//設置行的高度

--------------------------------------------------------------------------------

QTableWidget *table = new QTableWIdget(this);

table->setColumnCount(5);    //設置列數

table->setRowCount(3);        //設置行數/

/*設置列名*/

QStringList headers;

headers<<"列名1"<<"列名2"<<"列名3";

table->setHorizontalHeaderLabels(headers);

/*給單元格添加內容*/

void addItemContent(int row, int column, QString content)

{

      QTableWidgetItem *item = new QTableWidgetItem (content);

      table->setItem(row, column, item);

}

/*給單元格中增長圖標*/

QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), NULL);  //只加入圖標,沒有字符串

QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), myString);   //加入圖標和字符串

table->setItem(row, column, item);

/*插入一行*/

int row = table->rowCount();

table->insertRow(row);

/*插入一列*/

int column = table->columnCount();

table->insertColumn(column);

 //使行列頭自適應寬度,最後一列將會填充空白部分

table->horizontalHeader()->setStretchLastSection(true);          

//使行列頭自適應寬度,全部列平均分來填充空白部分            

table->horizontalHeader()->setResizeMode(QHeaderView::Strtch);       

//使行自適應高度,假如行不少的話,行的高度不會一直減少,當達到必定值時會自動生成一個QScrollBar

table->verticalHeader()->setResizeMode(QHeaderView::Strtch);

//設置單擊選擇一行

table->setSelectionBehuavior(QAbstractItemView::SelectRows);

//設置每行內容不可編輯

table->setEditTriggers(QAbstractItemView::NoEditTriggers);

//設置只能選擇一行,不能選擇多行

table->setSelectionMode(QAbstractItemView::SingleSelection);

/*去掉每行的行號*/

QHeaderView *headerView = table->verticalHeader();

headerView->setHidden(true);

/*設置讓某個單元格或某行選中*/

選中單元格:table->setCurrentCell(row, column, QItemSelectionModel::Select);

選中一行:table->setCurrentCell(row, QItemSelectionModel::Select);(注意此處的列沒有值)

相關文章
相關標籤/搜索