如何在我的 Qdialogbox 的 linedits 中填充值?

how to populate values in my Qdialogbox's linedits?

在我的主 window 中,我有一个名为 employee_listQlistWidget,这个 QListWidget 中的项目是这样的:

<FIRM-1> name="Anna Ken" age="25" job="QtMaster" ,
<FIRM-2> name="Sir Ron" age="50" job="QtSlave"

因此,当我单击 employee_list QlistWidget 中的项目时,dialogbox 会显示 3 个字段 name,age,job,如下所示

但是当这个对话框出现时,我想要填充字段 name,age,job,像这样,我怎样才能做到这一点?

到目前为止我已经试过了。

void MainWindow::on_employee_list_itemDoubleClicked(QListWidgetItem* item)
{
    QString test = item->text();             // getting the item text
    std::string test_s = test.toStdString();  //converting it to string from Qstring
    string name_part = "";                     //creating a variable in which name will be stored

        int name_pos = test_s.find("name=\"");
        for (int i = name_pos + 6; i < test_s.length();i++)
        {
            if (test_s[i] != '\"')
                name_part += test_s[i];
            else
                break;                         //extracting name in the item's text, after this the name_part variable value is Sir ron.  // similar code for extarcting age and job.
            
    if (test_s.find("<FIRM-1>") != std::string::npos)   //if item contains text <FIRM-1> then show this dialogue
    {
        GrpComd grpComd;   //creating instance of dialog
        grpComd.exec();    //showing it 
              
       grpComd.name_lineedit->settext(name_part);  // i tried this to populate name in name_linedit but getting error , access violation reading location
    }
}

由于我们看不到 GrpComd 的代码,我们无法知道您是否初始化了该指针。或者即使它是 public 成员。

无论如何,您应该在调用对话框 exec() 之前设置文本。 QLineEdit 的方法是 setText 而不是“settext”——注意大写 'T'

你必须填写然后显示,即 setText() 然后是 show()exec():

if (test_s.find("<FIRM-1>") != std::string::npos)  
{
    GrpComd grpComd;
    grpComd.setName(clickedName); 
    grpComd.setJob(clickedJob); 
    grpComd.setAge(clickedAge); 
    grpComd.exec();  
}

甚至更好,如果尚未定义,则使用这些字段创建一个构造函数。

GrpComd::GrpComd(const QString& name,const QString& job, uint age);