QT主函数(主窗口)子函数(子窗口)之间传值及treeWidget重命名功能

尝试过全局变量不太好用,这里主要使用signal--slot机制。

1、主函数向子函数传值

mainwindow.h:

#include<Dialog.h>

signals:

        void sendStr(QString);

private:

        Dialog *newDialog;

 

mainwindow.cpp:

void MainWindow::on_pushButton_clicked()   //自定义按钮函数 点击传值。

{

        QTreeWidgetItem *item = ui->treeWidget->currentItem();  //自定义treeWidget

        newDialog = new Dialog();

        newDialog->setModal(true);   //模态

        QObject::connect(this,SIGNAL(sendStr(QString)),newDialog,SLOT(getStr(QString)));

        QString oldStr = item->text(0);  //向newDialog传当前节点名字

        emit sendStr(oldStr);

        newDialog->show();

}

 

dialog.h:

private slots:

        void getStr(QString);

dialog.cpp:

void Dialog::getStr(QString str)

{

        ui->lineEdit->setText(str);  //自定义linEdit对象,将oldStr 传入dialog并显示在linEdit中。

}

2、子函数向主函数传值

规则一致。代码相似:

 

mainwindow.h:

#include<Dialog.h>

private:

        Dialog *newDialog;

 

mainwindow.cpp:

void MainWindow::getNewStr(QString newstr)  //将Dialog传回的值设为treeWidget当前节点的内容

{

        QTreeWidgetItem *item = ui->treeWidget->currentItem();

        item->setText(0,newStr);   

}

void MainWindow::on_pushButton_clicked()   //自定义按钮函数,点击打开newDialog

{

        newDialog = new Dialog();

        newDialog->setModal(true); //模态

        QObject::connect(newDialog,SIGNAL(sendNewStr(QString)),this,SLOT(getNewStr(QString)));

        newDialog->show();

}

dialog.h:

signals:

        void sendNewStr(QString);

dialog.cpp:

void Dialog::on_okButton_clicked() //自定义传递按钮

{

        QString newStr = ui->lineEdit->text();  //获取lineEdit中输入的内容为newStr

        emit sendNewStr();

        this->hide();  //传值后隐藏,回到MainWindow

}

 

3、将1、2合并可以完成功能主窗口旧名字传递给子窗口,子窗口重命名后将新名字传递给主窗口。

 

 

 

 

 

 

Qt中,窗口窗口传值可以通过以下步骤完成: 1.在窗口中定义一个成员变量,用于存储窗口传递过来的值。 2.在窗口中创建窗口对象,并将需要传递的值作为参数传递给窗口的构造函数。 3.在窗口的构造函数中,将传递过来的值赋值给成员变量。 4.在需要使用传递过来的值的地方,通过调用窗口对象的成员函数来获取传递过来的值。 例如,如果窗口是一个对话框(QDialog),我们可以在窗口的头文件中定义一个成员变量: ```c++ class MyDialog : public QDialog { Q_OBJECT public: MyDialog(QWidget *parent = nullptr); ~MyDialog(); private: int m_value; }; ``` 然后在窗口中创建窗口对象,并将需要传递的值作为参数传递给窗口的构造函数: ```c++ void MainWindow::on_pushButton_clicked() { MyDialog dialog(this, 10); dialog.exec(); } ``` 在窗口的构造函数中,将传递过来的值赋值给成员变量: ```c++ MyDialog::MyDialog(QWidget *parent) : QDialog(parent) { setWindowTitle("MyDialog"); } MyDialog::MyDialog(QWidget *parent, int value) : QDialog(parent) , m_value(value) { setWindowTitle("MyDialog"); } ``` 在需要使用传递过来的值的地方,通过调用窗口对象的成员函数来获取传递过来的值: ```c++ void MyDialog::on_pushButton_clicked() { QMessageBox::information(this, "Value", QString("Value is %1").arg(m_value)); } ``` 这样就完成了窗口窗口传值的过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值