Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Qt中的对话框声明指向主窗口的指针 这可能是一个C++问题,比QT更为棘手。但我一直在想办法做这件事。但我自己解决不了这个问题。我希望一些专家能在这个问题上提供帮助。这是我的问题_C++_Qt - Fatal编程技术网

从Qt中的对话框声明指向主窗口的指针 这可能是一个C++问题,比QT更为棘手。但我一直在想办法做这件事。但我自己解决不了这个问题。我希望一些专家能在这个问题上提供帮助。这是我的问题

从Qt中的对话框声明指向主窗口的指针 这可能是一个C++问题,比QT更为棘手。但我一直在想办法做这件事。但我自己解决不了这个问题。我希望一些专家能在这个问题上提供帮助。这是我的问题,c++,qt,C++,Qt,在我的Qt应用程序中,我有一个主窗口和一个对话框。在主窗口中有lineEdit_1,在对话框中有lineEdit_2。在主窗口中,我有一个按钮,一旦按下,对话框就会出现。但我需要在主窗口的lineEdit_1中键入一些文本,当按下按钮时,我需要对话框在其lineEdit_2中显示该文本。这就是我试图这样做的方式。我将非常感谢你的建议 主窗口 #include"mydialog.h" class MainWindow : public QMainWindow, private Ui::Main

在我的Qt应用程序中,我有一个主窗口和一个对话框。在主窗口中有
lineEdit_1
,在对话框中有
lineEdit_2
。在主窗口中,我有一个按钮,一旦按下,对话框就会出现。但我需要在主窗口的lineEdit_1中键入一些文本,当按下按钮时,我需要对话框在其lineEdit_2中显示该文本。这就是我试图这样做的方式。我将非常感谢你的建议

主窗口

 #include"mydialog.h"

class MainWindow : public QMainWindow, private Ui::MainWindow
{

Q_OBJECT

private:
mydialog *dia;


public:
 MainWindow(QWidget *parent = 0);


public slots:
void showMyDialog();
}
mainwindow.cpp

 #include"mainwindow.h"

 MainWindow::MainWindow(QWidget *parent)

{
setupUi(this);

connect(pushButton,SIGNAL(clicked()),this,SLOT(showMyDialog()) );
}

void MainWindow::showMyDialog(){
dia=new mydialog(this);
dia->exec();
}
mydialog.h

 #include"mainwindow.h"


 class mydialog : public QDialog, private Ui::mydialog
 {
 Q_OBJECT

 public:
  mydialog(QWidget *parent );
  MainWindow *blh;


 public slots:

 }
在mydialog.h中,如果我不添加
#包括“mainwindow.h”
,则编译时不会出错。但在代码中,当我添加它时,编译器给出了一个错误<代码>错误:ISO C++禁止在“代码< > MyTalk *DI.”中声明“NeXEngress”没有类型< /代码>;代码>

我想在mydialog.h中添加
#包括“mainwindow.h”
,因为这样我可以将指针声明为
mainwindow*blh
并通过以下方式获取主窗口中的文本:

QString str=blh->lineEdit_1->text();
这是正确的还是我做错了什么。请有人给我建议,或指出错误。我怎样才能做到这一点


谢谢…

有一个简单的答案:为什么不让
mydialog
构造函数接受一个字符串

mydialog::mydialog(QString str, QWidget* parent)
{
    // ...
    lineEdit_2->setText(str);
    // ...
}
然后,在主窗口中:

void MainWindow::showMyDialog()
{
    mydialog dia(lineEdit_1->text(), this); // instead of new mydialog(...);
    dia->exec();
}
请注意,您有内存泄漏(
new
,没有
delete
)。我在显示的代码中更正了这一点


此方法避免了对话框和主窗口之间的紧密关系,从而使代码更易于维护。

是的,这很有效。但是编译器花了大约10分钟的时间写了这封信:)你能告诉我如何避免meomary泄漏吗。我的代码中有什么错误。为什么我们不能在这种情况下使用指针呢。你说的亲密关系是什么意思。请回复,我是qt的新成员。抱歉,我使用的“Previous”含义错误,现已修复。