[QT][DEMO] QTableWidget 設置某一列禁止編輯


例程 : 又是好風景 : http://blog.csdn.net/qiao_yihan/article/details/46413345

 

關鍵點: 

1.QTableWidgetItem 的 setFlags() 和 flags()

2.QTableWidget 不能 設置 setEditTriggers() 為 QAbstractItemView::NoEditTriggers,否則1中的設置會失效

table_widget->setEditTriggers(QAbstractItemView::NoEditTriggers); //設置不可編輯

 

代碼:

    int NumOfReg = 5;
    ui->tableWidget->setColumnCount(11);
    ui->tableWidget->setRowCount(NumOfReg);
    /* 設置 tableWidget */
    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "Id" << "Name" << "Unit" << "Value" << "Min" << "Max"  \
                                                   << "Type" << "Mode" << "Enable" << "Last read" << "Last write");
    ui->tableWidget->verticalHeader()->setVisible(false); // 隱藏水平header
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);   // 單個選中
    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);  // 可以選中多個


    /* 設置 Id Name 字段的值不能修改 */
    /* 設置不可修改的Id Name兩列的背景顏色為灰色 */
    for(int i = 0; i < NumOfReg; i++) {
        QTableWidgetItem *item = new QTableWidgetItem();
        //item->setBackground(QBrush(QColor(Qt::lightGray)));
        item->setFlags(item->flags() & (~Qt::ItemIsEditable));
        ui->tableWidget->setItem(i, 0, item);
    }
    for(int i = 0; i < NumOfReg; i++) {
        QTableWidgetItem *item = new QTableWidgetItem();
        item->setBackground(QBrush(QColor(Qt::lightGray)));
        item->setFlags(item->flags() & (~Qt::ItemIsEditable));
        ui->tableWidget->setItem(i, 1, item);
    }
MainWindow.c

 

 

 

工程文件:

 http://download.csdn.net/detail/ewrest/9854319

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM