在QT5中建立一个Widget1,并在Widget1里加上两个输入数据的lineedit控件和一个“开始”pushbutton控件。
另外添加一个Widget2,在Widget2里放置一个TextBrowser。
想要实现在Widget1中输入数据,点击开始按钮后弹出Widget2并在Widget2中输出前两个数据的加和
在这里我碰到程序异常结束的问题,
在QT5中建立一个Widget1,并在Widget1里加上两个输入数据的lineedit控件和一个“开始”pushbutton控件。
另外添加一个Widget2,在Widget2里放置一个TextBrowser。
想要实现在Widget1中输入数据,点击开始按钮后弹出Widget2并在Widget2中输出前两个数据的加和
在这里我碰到程序异常结束的问题,
用信号和槽函数即可实现,代码如下,如有帮助,请cain采纳,谢谢。
widget1的.h中添加如下内容:
signals:
void sigCaculate(double,double); //定义信号
private slots:
void on_pushButton_clicked(); //按钮按下
//widget1.cpp中:
void Widget1::on_pushButton_clicked()
{
double v1 = ui->lineEdit->text().toDouble();
double v2 = ui->lineEdit_2->text().toDouble();
emit sigCaculate(v1,v2);//发送计算信号
}
//-----------------------------
//widget2的.h文件中添加一个public函数:
void SetValue(QString value); //设置计算结果
//在.cpp中实现ruxi如下:
void Widget2::SetValue(QString value)
{
ui->textBrowser->setText(value);//在控件中输入值
}
//在调用widget1和widget2的类中,tian添加如下内容:
//比如mainwindow.h中:
#include <widget1.h>
#include <widget2.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void slotCaculate(double v1,double v2);
private:
Ui::MainWindow *ui;
Widget1* m_widget1;
Widget2* m_widget2;
};
//在mainwindow.cpp文件中
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_widget1 = new Widget1(this);
m_widget2 = new Widget2(this);
//绑定信号
connect(m_widget1,SIGNAL(sigCaculate(double,double)),this,SLOT(slotCaculate(double,double)));
}
MainWindow::~MainWindow()
{
delete ui;
}
//计算结果,并输出到widget2的控件中
void MainWindow::slotCaculate(double v1, double v2)
{
double v = v1 + v2;
if(m_widget2)
m_widget2->SetValue(QString::number(v));
}