gpt4 book ai didi

c++ - qt中如何在窗体之间传递数据

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:18 28 4
gpt4 key购买 nike

我有一个有四个按钮的主窗口,所有这四个按钮都连接到“clicked()”信号。当我们点击按钮时,它会转到另一个替换主窗口的小部件(使用堆叠布局)。我想将按钮的名称传递给小部件,以便我可以使用该值并将其附加到小部件中的标签。我尝试使用以下方法将值传递给 widgte:

主窗口.h

public:
explicit MainWindow(QWidget *parent = 0);
QStackedLayout *stackedLayout;
QLineEdit* lineEdit();

主窗口.cpp

QLineEdit* MainWindow::lineEdit()
{
//buttonName is a QLineEdit on the main form which is hidden and value is being set when a button is clicked
std::string text=ui->buttonName->text().toUtf8().constData();
std::cout<<"Button Name passed from main window is"<<text<<std::endl;

return ui->buttonName;
}

SecondForm.cpp

    MainWindow mainWind;
std::string text=mainWind.lineEdit()->text().toUtf8().constData();
std::cout<<"The name of the button is"<<text<<std::endl;

这是我正在遵循的方法。数据未返回到第二种形式。是因为我在单击按钮后设置 QLineEdit 的值并且该值未存储在任何地方吗?你能告诉我我在这里遗漏了什么吗?

最佳答案

在每个按钮的 on_button_clicked() 插槽中,您可以将单击按钮的 text() 信号发送到新小部件。

//Your signal declaration in MainWindow.h
void signalToWidget( QString buttonText );

/*The slot in your widget to handle the text (you may need to subclass your widget to add this functionality*/
void slotSetText( QString buttonText )
{
widgetElement->setText( buttonText );
}

//connect in MainWindow constructor
QObject::connect( MainWindow, SIGNAL( signalToWidget( QString ) ),
widget, SLOT( slotSetText( QString ) ) );

void MainWindow::onButton1Clicked()
{
emit signalToWidget( ui->button1->text() );
}

关于c++ - qt中如何在窗体之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com