要实现的功能是:在参数设置控件的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));