
要实现的功能是:在参数设置控件的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才行
假如没建的话,需要先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));
_tableWidget->item(row_number, 0)->setText(QString::fromStdString(it->fist));
_tableWidget->item(row_number, 1)->setText( QString::fromStdString(it->second));