如何用QT或者C++复写下述代码?
怎么复写 page1.dataGrid1.ItemsSource = dt.DefaultView;这一语句?
private void bt_redo_Click(object sender, RoutedEventArgs e)
{
//把当前状态放入撤销栈
DataTable indt = dt.Copy();
undo_stack.Push(indt);
//当前dt设置为重做栈栈顶
dt = redo_stack.Pop();
//dataGrid源设置为dt
page1.dataGrid1.ItemsSource = dt.DefaultView;
//可以撤销,判断可不可以重做
undo.IsEnabled = true;
if (redo_stack.Count == 0)
redo.IsEnabled = false;
}
```
“Devil组”引证GPT后的撰写:
QT:
void MainWindow::bt_redo_Click()
{
//把当前状态放入撤销栈
DataTable indt = dt.Copy();
undo_stack.push(indt);
//当前dt设置为重做栈栈顶
dt = redo_stack.top();
//dataGrid源设置为dt
QStandardItemModel *model = new QStandardItemModel(dt.rowCount(), dt.columnCount(), this);
for (int row = 0; row < dt.rowCount(); ++row) {
for (int column = 0; column < dt.columnCount(); ++column) {
QModelIndex index = model->index(row, column, QModelIndex());
model->setData(index, dt(row, column));
}
}
page1.dataGrid1->setModel(model);
//可以撤销,判断可不可以重做
undo->setEnabled(true);
if (redo_stack.empty())
redo->setEnabled(false);
}
c++
void MainWindow::bt_redo_Click(object sender, RoutedEventArgs e)
{
// 把当前状态放入撤销栈
QStack<DataTable> undoStack;
DataTable indt = dt.Copy();
undoStack.push(indt);
// 当前dt设置为重做栈栈顶
dt = redo_stack.top();
redo_stack.pop();
// dataGrid源设置为dt
page1->dataGrid1->setModel(dt.DefaultView);
// 可以撤销,判断可不可以重做
undo->setEnabled(true);
if (redo_stack.isEmpty())
redo->setEnabled(false);
}