c++ - 从 Qt 中的对话框声明指向主窗口的指针

标签 c++ qt

这可能是一个比 qt 更深入的 c++ 问题。但我正在寻找一种方法来执行此操作 2 天。但我自己无法解决这个问题。我希望一些专家能帮助解决这个问题。这是我的问题。

在我的 Qt 应用程序中,我有一个主窗口和一个对话框。在主窗口中有 lineEdit_1,在对话框中有 lineEdit_2。在主窗口中,我有一个按钮,一旦按下,对话框就会出现。但是我需要在主窗口的 lineEdit_1 中键入一些文本,当按下按钮时,我需要对话框应用程序在它的 lineEdit_2 中显示该文本。这就是我试图做到这一点的方式。如果有任何建议,我将不胜感激。

主窗口.h

 #include"mydialog.h"

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

Q_OBJECT

private:
mydialog *dia;


public:
 MainWindow(QWidget *parent = 0);


public slots:
void showMyDialog();
}

主窗口.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();
}

我的对话框.h

 #include"mainwindow.h"


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

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


 public slots:

 }

在 mydialog.h 中,如果我不添加 #include"mainwindow.h",则编译没有错误。但是当我在代码中添加它时,编译器给出了一个错误 error: ISO C++ forbids declaration of 'newMember' with no type in the line mydialog *dia;

我想在 mydialog.h 中添加 #include"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)。我在显示的代码中更正了这个问题。

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

关于c++ - 从 Qt 中的对话框声明指向主窗口的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013141/

相关文章:

c++ - 构造函数隐式删除

qt - 神秘的Qt未定义接口(interface): investigation

qt - 烦人的背景位置问题

c++ - char8_t *的printf()格式字符是什么?

c++ - 如何在 Linux 上初始化共享库

android - 如何在 NDK 项目中的 GL 之上绘制 android UI 元素

c++ - 字符*str;海峡 ="HELLO";在不为字符串分配任何内存的情况下如何工作?

Java 相当于 QT 中的信号和槽

qt - 将文本转换为 quint16

c++ - 启动时强制连接尚不可见的 QML 项的信号/槽