设置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();
}