gpt4 book ai didi

c++ - 在 QListWidget 中添加 QMap 项并选择该项作为事件项

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:50 28 4
gpt4 key购买 nike

我是 QT 的新手,我正在尝试创建一个 kalk。可以在 QListWidget 上插入一个 QMap 对象吗?

我会解释:

我有这个主窗口

在底部有一个 QListWidget,我想要做的是在列表中添加我在构造函数中创建的所有 QMap 对象以及我在添加攻击时创建的对象。

基本窗口.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;

};

基本窗口.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 获取 BaseAttack,但要以简单的方式工作,BaseAttack 类必须有一个复制构造函数。

*.h

private slots:
void onItemClicked(QListWidgetItem *item);

*.cpp

    storedBA.insert(tr("Empty"), BaseAttack());
storedBA.insert(tr("First"), BaseAttack());

QMapIterator<QString, BaseAttack> i(storedBA);
while (i.hasNext()) {
i.next();
list->addItem(i.key());
}
connect(list, &QListWidget::itemClicked, this, &baseWindow::onItemClicked);
}


void baseWindow::onItemClicked(QListWidgetItem *item)
{
BaseAttack ba = storedBA[item->text()];
}

关于c++ - 在 QListWidget 中添加 QMap 项并选择该项作为事件项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51675316/

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