std::map

C++语言 码拜 8年前 (2016-04-15) 1063次浏览
std::map
要实现的功能是:在参数设置控件的tablewidget里输入内容,点击保存按钮,在参数控件的tablewidget里对应显示内容。
写在一个类里,本人已经实现了,但是要写在两个类里,还要用到std::map<std::string, std::string>就不知道怎么写了,
求高手指点!一下是三个要用到的自定义函数:

//其实真正不懂的是这三个函数的参数怎么用
void InitParameter(std::map<std::string, std::string>& mapPara);    //初始化参数
void UpdateParameter(std::map<std::string, std::string>& mapPara);  //更新参数
 void GetLstParameter(std::map<std::string, std::string>& mapPara); //获取参数
private slots:
    void SaveParameter();  //保存参数

参数设置控件类:

STControlPageUI::STControlPageUI(QWidget *parent, IStrategyComponent* pStComponent)
    : QWidget(parent)

参数控件类:

ParameterSetDilog::ParameterSetDilog(QWidget *parent)
解决方案

20

给你个简单的MAP例子,通过key找到对应的value

#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
	string a = "a1";
	string b = "24";
	string c = "b1";
	string d = "35";
	std::map<std::string, std::string> mapPara;

	//两种方式插入元素
	mapPara[a] = b;
	mapPara.insert(pair<std::string, std::string>(c,d));
        //遍历map,你在槽函数里遍历,然后更新对应的参数就好
	std::map<std::string, std::string>::iterator it;
	for(it = mapPara.begin(); it != mapPara.end(); it++)
		cout << it->first << " " << it->second << endl;
}

http://blog.csdn.net/flqbestboy/article/details/8184484

20

将你参数设置的这个tablewidget每行的参数名以及值一对对的放到map里,然后将mapPara传到另一个tabwidget就行了

std::map<std::string, std::string> mapPara;
	for(int i = 0; i < ui->tableWidget_para_set->rowCount(); i++)
	{
		string name = ui->tableWidget_para_set->item(i, 0)->text().toStdString();
		string value = ui->tableWidget_para_set->item(i, 1)->text().toStdString();
		mapPara[name] = value;
	}

20

假如你的_tableWidget本来就已经建好了行和列那么像下面那样就行。
假如没建的话,需要先insertRow,然后setItem才行

std::map<std::string, std::string>::iterator it;
	int row_number = 0;
    for(it=mapPara.begin();it!=mapPara.end();it++)
    {
        _tableWidget->item(row_number, 0)->setText(it->fist);
		_tableWidget->item(row_number, 1)->setText(it->second);
		row_number++;
    }

20

转一下呗。
_tableWidget->item(row_number, 0)->setText(QString::fromStdString(it->fist));
_tableWidget->item(row_number, 1)->setText( QString::fromStdString(it->second));

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明std::map
喜欢 (0)
[1034331897@qq.com]
分享 (0)