Qtablewidget设置某一列(列)不可编辑,获取点击信息,修改点击信息

设置Qtablewidget第一列不可编辑方法:

1.QTableWidgetItem 的 setFlags() 和 flags()

2.QTableWidget 不能 设置 setEditTriggers() 为 QAbstractItemView::NoEditTriggers,否则1中的设置会失效

一切都在代码里了

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //设置行列个数
    ui->tableWidget->setColumnCount(5);
    ui->tableWidget->setRowCount(5);
    /* 设置 tableWidget */
    ui->tableWidget->setHorizontalHeaderLabels(QStringList() << "one" << "two" << "three" << "four" << "five");
    // 隐藏水平header
    ui->tableWidget->verticalHeader()->setVisible(false);
    // 单个选中
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
    // 编辑点击触发,与关联的信号对应最佳
    ui->tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked);
    //获取双击的位置的文本
    connect(ui->tableWidget,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(getCurrentText(QModelIndex)));
    /* 设置 Id字段的值不能修改 */
    for(int i = 0; i < 5; i++) {
        //新建item
        QTableWidgetItem *item = new QTableWidgetItem();
        //设置不可点击的背景
        item->setBackground(QBrush(QColor(Qt::blue)));
        item->setFlags(item->flags() &= (~Qt::ItemIsEditable));
        ui->tableWidget->setItem(i, 0, item);
    }
    for(int i = 0;i < 5;i++)
    {
        for(int j = 0; j < 5;j++)
        {
            //设置每行每列的内容
            model = ui->tableWidget->model();
            index = model->index(i,j);
            QVariant data(tr("第%1行%2列").arg(i+1).arg(j+1));
            model->setData(index,data);
        }
    }
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::getCurrentText(QModelIndex in)
{
    qDebug() << model->data(in).toString();
}
 
 

猜你喜欢

转载自blog.csdn.net/qq_41399894/article/details/87936899