【发布时间】:2018-08-03 14:56:23
【问题描述】:
我是 QT 的新手,我正在尝试创建一个 kalk。 可以在 QListWidget 上插入 QMap 对象吗?
我会解释:
我有这个主窗口
在底部有一个 QListWidget,我想做的是在列表中添加我在 costructor 上创建的所有 QMap 对象以及我在添加攻击时创建的对象。
baseWindow.h
#ifndef BASEWINDOW_H
#define BASEWINDOW_H
#include <QMainWindow>
#include <QWidget>
#include <QGridLayout>
#include <QLineEdit>
#include <QMessageBox>
#include <QTextEdit>
#include <QListWidget>
#include <QPushButton>
class baseWindow : public QWidget
{
Q_OBJECT
public:
explicit baseWindow(QWidget *parent = 0);
public slots:
void changeKalkClicked();
void addClicked();
void clearClicked();
void deleteClicked();
void itemSelected();
private:
QPushButton* addButton;
QPushButton* clearButton;
QPushButton* deleteButton;
QLineEdit* displayBA;
QMap<QString,BaseAttack> storedBA;
QListWidget* list;
};
basewindow.cpp
baseWindow::baseWindow(QWidget *parent) : QWidget(parent)
{ //Omitted the button/layout/LineEdit creation
list = new QListWidget;
storedBA.insert(tr("Empty"),BaseAttack());
storedBA.insert(tr("First"),BaseAttack());
QListWidgetItem* prova = new QListWidgetItem;
prova->setText(tr("Try"));
list->addItem(prova);
}
有可能吗?我需要创建从 QMap 到 QListWidget 的连接?
【问题讨论】:
-
您希望每个项目都有一个 QMap 吗?
SIGNAL(itemClicked(QMap*))是什么意思? -
不,恰恰相反。我没有解释清楚:我希望所有 Qmap 项都出现在 QListWidget 中(在示例中为“Empty”和“First”项)。因此,在 QListWidget 中构建 Kalk 之后,出现了对象“Empty”和对象“First”。 connect(list, SIGNAL(itemClicked(QMap*)), this, SLOT(itemSelected()));这是一个尝试看看会发生什么(错误)
-
我还是没看懂,不知道什么是KALK,另一方面signals定义了他们发送的数据类型,不能改,itemClicked发送指向item的指针按下去,你想不到会神奇地发送不同的数据。
-
我怀疑您有一个预定义的 QMap,其中键必须是项目的文本,而 BaseAttack 的值是您在按下项目时想要获取的值。我是对的?
-
BaseAttack 继承自哪个类?