gpt4 book ai didi

c++ - Qt - 复制一个 QTableWidget 的数据并将其粘贴到另一个 QTableWidget

转载 作者:行者123 更新时间:2023-11-28 05:49:48 27 4
gpt4 key购买 nike

我问了一个与此非常相似的问题,但回答者提供了少量帮助,我无法解决我的问题。我想我会重新问这个问题,因为没有其他人回答我的问题。我想知道如何将 QTableWidget 的数据从一个窗口复制到另一个窗口上的另一个 QTableWidget。

例如,我会输入“TableWidget1”,然后单击一个按钮,它会从“TableWidget1”复制数据并将其粘贴到不同窗口的“TableWidget2”中。我尝试使用下面的代码,当我编译程序时,它工作正常,直到单击复制和粘贴按钮,然后它才会崩溃。

这是代码(有很多,不好意思):

表主窗口1.h:

#ifndef TABLEMAINWINDOW1_H
#define TABLEMAINWINDOW1_H

#include <QMainWindow>
#include "tabledialougewindow.h"

namespace Ui {
class TableMainWindow1;
}

class TableMainWindow1 : public QMainWindow
{
Q_OBJECT

public:
explicit TableMainWindow1(QWidget *parent = 0);
~TableMainWindow1();

private slots:
void on_pushButton_clicked();

private:
Ui::TableMainWindow1 *ui;
TableDialougeWindow *tbl2;
};

#endif // TABLEMAINWINDOW1_H

tablemainwindow1.cpp:

#include "tablemainwindow1.h"
#include "ui_tablemainwindow1.h"

TableMainWindow1::TableMainWindow1(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::TableMainWindow1)
{
ui->setupUi(this);
ui->tableWidget->setRowCount(3);
ui->tableWidget->setColumnCount(3);
}

TableMainWindow1::~TableMainWindow1()
{
delete ui;
}


void TableMainWindow1::on_pushButton_clicked()
{
tbl2 = new TableDialougeWindow(this);
tbl2->show();
}

tabledialougewindow.h:

#ifndef TABLEDIALOUGEWINDOW_H
#define TABLEDIALOUGEWINDOW_H

#include <QDialog>

namespace Ui {
class TableDialougeWindow;
}

class TableDialougeWindow : public QDialog
{
Q_OBJECT

public:
explicit TableDialougeWindow(QWidget *parent = 0);
~TableDialougeWindow();

private slots:
void on_buttonBox_accepted();

private:
Ui::TableDialougeWindow *ui;
};

#endif // TABLEDIALOUGEWINDOW_H

tabledialougewindow.cpp:

#include "tabledialougewindow.h"
#include "ui_tabledialougewindow.h"
#include "tablemainwindow1.h"
#include "ui_tablemainwindow1.h"

int Rows = 3;
int Columns = 3;
Ui::TableMainWindow1 *mainui;
TableDialougeWindow::TableDialougeWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::TableDialougeWindow)
{
ui->setupUi(this);
ui->tableWidget->setRowCount(Rows);
ui->tableWidget->setColumnCount(Columns);
}

TableDialougeWindow::~TableDialougeWindow()
{
delete ui;
}


void TableDialougeWindow::on_buttonBox_accepted()
{
for(int i = 0;i<Columns;++i){
for(int j = 0;j<Rows;++j){
QTableWidgetItem *celltxt = ui->tableWidget->item(j,i);
QTableWidgetItem *celltxt2 =new QTableWidgetItem(*celltxt);
mainui->tableWidget->setItem(j,i,celltxt2);
}
}
accept();
}

感谢任何帮助。谢谢。

最佳答案

尝试在调试器中启动应用程序并检查崩溃的确切位置。

我看到您设置了行数和列数,但您从未创建实际项目。 AFAIK QTableWidget 不会为您创建项目。难道这个调用只是返回nullptr

QTableWidgetItem *celltxt = ui->tableWidget->item(j,i);

关于c++ - Qt - 复制一个 QTableWidget 的数据并将其粘贴到另一个 QTableWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35507990/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com