c++ - 在 QListWidget 中添加 QMap 项目并选择该项目为活动的
问题描述
我是 QT 的新手,我正在尝试创建一个 kalk。可以在 QListWidget 上插入 QMap 对象吗?
我会解释:
我有这个主窗口
在底部有一个 QListWidget,我想要做的是在列表中添加我在 costructor 上创建的所有 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()];
}
推荐阅读
- java - 通过布尔检查按钮单击?
- node.js - 通过代理安装 npm 包以错误 407 结束
- android - 如何在Android中使用带有麦克风和播放音频的蓝牙耳机录制屏幕
- html - Angular Web 应用程序可以离线工作,但不能在线工作
- c++ - 如何为已渲染的多个 3D 模型创建多个模型矩阵?
- javascript - 如何更改 Angular 库组件中使用的垫卡的样式
- python - 如何在 Django 视图的外键列中分配字符串值而不是 id?
- flutter - 颤振文本小部件使用
- javascript - 如何更新 MongoDB 中深度嵌套的数组文档?
- flutter - 如何在 Flutter DataTable 中进行无限滚动?