我正在使用QTableView作爲行輸入法: 用戶填寫字段,然後單擊「Carica」按鈕以執行插入操作(他不應該完全填充整行)。當點擊按鈕時,QTableView不會更新已編輯的單元格
假設用戶插入(如在圖像中)第一個字段,然後單擊「carica」。按鈕代碼被觸發:
QModelIndex index = modelprod->index(0, 0); //modelprod is model for the QTable
qInfo() << index.data().toString();
程序不打印任何東西!這是因爲tableview沒有存儲該值(請注意單元格是如何被藍色包圍的)。事實上,如果用戶點擊按鈕之前的其他內容,該程序按預期工作。
我需要一種在用戶點擊按鈕後立即更新模型的方法。
REQUESTED代碼示例
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),ui(new Ui::MainWindow){
ui->setupUi(this);
modelp = new QStandardItemModel(1,1,this);
modelp->setHorizontalHeaderItem(0, new QStandardItem(QString("ID")));
ui->tableView->setModel(modelp);
}
MainWindow::~MainWindow(){delete ui;}
void MainWindow::on_pushButton_clicked(){
int rowcount = modelp->rowCount(QModelIndex());
QModelIndex index = modelp->index(0, 0);
modelp->setItem(rowcount,0, new QStandardItem(QString(index.data().toString())));
//add the element in row 0 into a new row in the same tableView
}
mainwindow.h
namespace Ui{class MainWindow;}
class MainWindow : public QMainWindow{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
QStandardItemModel *modelp;
};
在圖像中,我插入單元格「測試」。沒有點擊其他任何地方,我點擊按鈕。當意向是複製新行中的第一行內容時,會創建一個新的空行。現在,如果我點擊空單元格然後點擊按鈕,它會正確地將它寫入新單元格中。
modelprod是自定義模型或其中一個標準,如果它是自定義模型之一,請向我們展示代碼。 – eyllanesc
只需添加代碼。 –
按下 – eyllanesc