1. 程式人生 > >QT QTableView用法小結(設定單元格字型顏色,文字字型...)

QT QTableView用法小結(設定單元格字型顏色,文字字型...)

這幾天在公司做關於衰減開關的上位機,用到很多表格,其中表格基本上都是用QTableView進行編寫。為了防止以後忘記,同時也給後續的同學一點學習建議,特此寫下這篇部落格。 QTableView常用於實現資料的表格顯示。下面我們如何按步驟實現學生資訊表格:一 新增表頭

     //準備資料模型
    QStandardItemModel *student_model = new QStandardItemModel();
    student_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));
    student_model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("NO.")));
    student_model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Sex")));
    student_model->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("Age")));
    student_model->setHorizontalHeaderItem(4, new QStandardItem(QObject::tr("College")));
    //利用setModel()方法將資料模型與QTableView繫結
    ui->student_tableview->setModel(student_model);

二 設定表格屬性

    //設定列寬不可變動,即不能通過滑鼠拖動增加列寬        
    ui->student_tableview->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);   
    ui->student_tableview->horizontalHeader()->setResizeMode(1, QHeaderView::Fixed);   
    ui->student_tableview->horizontalHeader()->setResizeMode(2, QHeaderView::Fixed);   
    ui->student_tableview->horizontalHeader()->setResizeMode(3, QHeaderView::Fixed);   
    ui->student_tableview->horizontalHeader()->setResizeMode(4, QHeaderView::Fixed);   
    //設定表格的各列的寬度值        
    ui->student_tableview->setColumnWidth(0,100);    
    ui->student_tableview->setColumnWidth(1,100);    
    ui->student_tableview->setColumnWidth(2,100);    
    ui->student_tableview->setColumnWidth(3,100);    
    ui->student_tableview->setColumnWidth(4,100);        
    //預設顯示行頭,如果你覺得不美觀的話,我們可以將隱藏        
    ui->student_tableview->verticalHeader()->hide();       
    //設定選中時為整行選中        
    ui->student_tableview->setSelectionBehavior(QAbstractItemView::SelectRows);         

    //設定表格的單元為只讀屬性,即不能編輯        
    ui->student_tableview->setEditTriggers(QAbstractItemView::NoEditTriggers);          
    //如果你用在QTableView中使用右鍵選單,需啟用該屬性        
    ui->tstudent_tableview->setContextMenuPolicy(Qt::CustomContextMenu);

三 動態新增行 在表格中新增行時,我們只需要在model中插入資料即可,一旦model中的資料發生變化,QTabelView顯示就會做相應的變動

//在第一行新增學生張三的個人資訊(setItem函式的第一個引數表示行號,第二個表示列號,第三個為要顯示的資料)
    student_model->setItem(0, 0, new QStandardItem(“張三"));
    student_model->setItem(0, 1, new QStandardItem("20120202"));
    student_model->setItem(0, 2, new QStandardItem("男"));
    student_model->setItem(0, 3, new QStandardItem("18"));
    student_model->setItem(0, 4, new QStandardItem("土木學院"));

四 設定資料顯示的樣式

 //設定單元格文字居中,張三的資料設定為居中顯示
    student_model->item(0, 0)->setTextAlignment(Qt::AlignCenter);
    student_model->item(0, 1)->setTextAlignment(Qt::AlignCenter);
    student_model->item(0, 2)->setTextAlignment(Qt::AlignCenter);
    student_model->item(0, 3)->setTextAlignment(Qt::AlignCenter);
    student_model->item(0, 4)->setTextAlignment(Qt::AlignCenter);
    //設定單元格文字顏色,張三的資料設定為紅色
    student_model->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0))); 
    student_model->item(0, 1)->setForeground(QBrush(QColor(255, 0, 0))); 
    student_model->item(0, 2)->setForeground(QBrush(QColor(255, 0, 0))); 
    student_model->item(0, 3)->setForeground(QBrush(QColor(255, 0, 0))); 
    student_model->item(0, 4)->setForeground(QBrush(QColor(255, 0, 0))); 
    //將字型加粗
    student_model->item(0, 0)->setFont( QFont( "Times", 10, QFont::Black ) );
    student_model->item(0, 1)->setFont( QFont( "Times", 10, QFont::Black ) );
    student_model->item(0, 2)->setFont( QFont( "Times", 10, QFont::Black ) );
    student_model->item(0, 3)->setFont( QFont( "Times", 10, QFont::Black ) );
    student_model->item(0, 4)->setFont( QFont( "Times", 10, QFont::Black ) );
    //設定排序方式,按年齡降序顯示
    student_model->sort(3, Qt::DescendingOrder);