【问题标题】:How to pass data between forms in qt如何在qt中的表单之间传递数据
【发布时间】:2015-01-14 20:09:39
【问题描述】:

我有一个有四个按钮的主窗口,所有这四个按钮都连接到“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 的值并且该值没有存储在任何地方吗?你能告诉我我在这里缺少什么吗?

【问题讨论】:

    标签: c++ qt qt4 qt-creator


    【解决方案1】:

    在每个按钮的 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() );
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多