C++ QTableview属性

C++ QTableview属性,c++,qt,qtableview,resizable,C++,Qt,Qtableview,Resizable,我需要有关自定义QTableView的帮助,我已定义了QTableView,如本例所示,我在internet上找到: model = new QStandardItemModel(2,3,this); //2 Rows and 3 Columns model->setHorizontalHeaderItem(0, new QStandardItem(QString("ID"))); model->setHorizontalHeaderItem(1, new QStandardItem

我需要有关自定义
QTableView
的帮助,我已定义了
QTableView
,如本例所示,我在internet上找到:

model = new QStandardItemModel(2,3,this); //2 Rows and 3 Columns
model->setHorizontalHeaderItem(0, new QStandardItem(QString("ID")));
model->setHorizontalHeaderItem(1, new QStandardItem(QString("Name")));
model->setHorizontalHeaderItem(2, new QStandardItem(QString("Description")));
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->setModel(model);
  • 如何分别定义每列的大小,即使用百分比:
    我会得到第一列宽度的10%,第二列50%,第三列40%

  • 当我运行程序并双击
    QTableView
    中的一行时,我可以更改所单击单元格的值,尽管我已经定义了一个
    QTableView
    onDoubleclick方法,我的意思是,当你单击重命名一个文件时,它会突出显示文本以便你可以修改,我如何禁用它

  • 如何使列的大小可调整,这意味着可以通过拖动列的边缘来调整大小


  • 首先:在
    setModel()
    之后使用
    setColumnWidth()
    方法。例如:

    //...
    ui->tableView->setModel(model);
    double  ii = ui->tableView->columnWidth(0);
    
    ui->tableView->setColumnWidth(1,0.4*ii);    
    ui->tableView->setColumnWidth(2,0.5*ii);
    
    第三:要做到这一点,请删除

    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    

    从您的代码中。

    strech工作正常,谢谢,但是ui->tableView->columnWidth(0);返回0@saeedhardan因为在setModel之前使用它,所以tableView没有任何内容,所以得到0。请看我的编辑,我写了解决方案。对于2,我刚刚取消了edittriggers中的双击,非常感谢