我正在尝试为学校(大学)的一个项目创建一个程序。
该程序基本上应该有一个带有一堆组件的QTreeWidget,当你点击一个按钮时QTreeWidget会更新(例如Chassis-button会将QTreeWidget变成一堆不同的底盘)。
从 QTreeWidget 中,您应该能够标记您想要的一个并单击“选择按钮”,该按钮会将该行传输到 QListWidget。行的一个示例可能是:
《分形设计》
“R3”
“100欧元”
“ATX”
每个组件我都有一堆类。其中一个类是 Chassis,它有一个名为 addChassis 的函数,如下所示:
void ChassisHandler::addChassis(string manufacturer, string model, int price, string size, string color, int fanSpots) {
Chassis **temp = new Chassis*[this->nrOfChassis + 1];
for (int i = 0; i < nrOfChassis; i++)
{
temp[i] = this->chassis[i];
}
delete[] this->chassis;
this->chassis = temp;
this->chassis[this->nrOfChassis] = new Chassis(manufacturer, model, price, size, color, fanSpots);
this->nrOfChassis++;
}
如果我想创建一个类对象并在对象中添加一些底盘然后打印出该对象,此功能可以正常工作,但我不能使用它将底盘添加到树小部件中。它需要是 QString 而不是 string 和 int 并且 Qt 似乎对我制作类对象然后将对象传输到 treewidget 有问题。我根本没有足够的知识能够将所有机箱放入 QTreeWidget。现在,我在属于 .ui 文件的 .cpp 文件中创建了一个附加函数,如下所示:
void Computer::AddChassi(QString manufacturer, QString model, QString price, QString size, QString color, QString fanSpots){
QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget);
itm->setText(0, manufacturer);
itm->setText(1, model);
itm->setText(2, price);
itm->setText(3, size);
itm->setText(4, color);
itm->setText(5, fanSpots);
}
但是如果我尝试将此函数放在 Chassiclass 中,它会说“未定义 UI”。我们在这个项目中使用类是非常重要的。
所以我的两个问题是:
如何创建正确
addfunctions
的将字符串放入我的 TreeWidget 的方法?如何将想要的字符串从我的 TreeWidget 传输到我的 ListWidget?