Qt-如何从同一文件中的另一个函数获取变量值

时间:2018-06-17 18:24:57

标签: qt qt5

Qt的新手。还在学习它。我有clone.ui,clone.h和clone.cpp。 clone ui有2个按钮。

  1. 浏览按钮 - >选择目的地路径
  2. 添加按钮 - >克隆(复制)文件
  3. Clone.h

    QString destination_path;
    QFileDialog *fdialog;
    

    Clone.cpp有

       QFileInfo finfo; // Declare outside function to increase scope
       QString destination_name; 
    
    void Clone:: on_pushButton__Browse_clicked()
    {  
      /*get the destination path in QString using QFileDialog 
        Got destination_path */
    
          QString destinatino_path = QFileDialog::getExistingDirectory(....);
          QFile finfo(destination_path);
         // QFileDialog  finfo(destionation_path)  
    
     }`  
    

    在同一个文件Clone.cpp

        void Clone:: on_btn_Add_clicked()
       { 
          // how to get the  same destination_path value here... 
          //using QFile or some other way?    
    
        }
    

    我来到这里,我错过了什么吗?任何想法/建议都非常有用。

1 个答案:

答案 0 :(得分:2)

您已创建一个包含数据成员Clone的班级(QString destination_path)。

由于它是一个成员变量,因此它具有类范围(因为您可以在同一个Clone::对象的任何Clone成员函数中访问相同的变量。

问题在于,您通过在QString destination_path中声明另一个 Clone::on_pushButton__Browse_clicked()来隐藏它。

void Clone::on_pushButton__Browse_clicked()
{  
    ...

    // this *hides* the class member with the same name
    QString destination_path = QFileDialog::getExistingDirectory(....); 

    ...
} 

解决方案是从行的开头删除QString,这意味着您现在正在分配给类对象的数据成员。

void Clone::on_pushButton__Browse_clicked()
{  
    ...

    // now you're assigning to your object's data member
    destination_path = QFileDialog::getExistingDirectory(....); 

    ...
} 

稍后,在Clone::on_btn_Add_clicked()您可以访问destination_path,并在Clone::on_pushButton__Browse_clicked

中为其分配值