在QT中,怎么让一个按钮点击一下换个功能,再点击又变回原来的功能

在QT中,如何让一个按钮点击一下换个功能,再点击又变回原来的功能
比如一个“修改”按钮,我点击一下,他就变成“保存”了
我知道有一种办法就是弄两个按钮重叠放置,一个“修改”按钮,一个“保存”按钮,点击其中一个,这个就隐藏,另一个就显示,
但是我在QT designer 里,怎么弄都没办法把两个按钮重叠在一起啊,该怎么解决啊

------解决方案--------------------
点击之后在槽函数里把这个按钮的名称改成“保存”不就得了
------解决方案--------------------
完全可以在用一个按钮啊,增加一个变量,在clicked()所连接的槽里,每点击一次就改变这个变量,然后改变按钮标题以及所做的事件处理。
------解决方案--------------------
楼主真新!!
------解决方案--------------------
槽函数里面写成switch,两个case相互转变就可以,每个case是你的一个功能...
------解决方案--------------------
有什么的,简单,一个水平布局,从左到右放控件:两个按钮(修改,保存)、间隔器(弹簧)
初始状态,保存按钮hide()。
修改按钮槽:隐藏-修改按钮hide(),显示-保存按钮show()
保存按钮槽反向操作。




------解决方案--------------------
探讨

有什么的,简单,一个水平布局,从左到右放控件:两个按钮(修改,保存)、间隔器(弹簧)
初始状态,保存按钮hide()。
修改按钮槽:隐藏-修改按钮hide(),显示-保存按钮show()
保存按钮槽反向操作。

------解决方案--------------------
在new pushbutton的时候记得设置pushButton->setCheckable(true);默认为false
clicked(bool)信号, 连接一个槽 slot_button_clicked(bool flag); if(flag){pushbutton->setText("保存")}else{pushbutton->setText("修改")};
------解决方案--------------------
这样行不?

bool flag = true;

if (flag)
pushbutton->setText(tr("保存"));
else
pushbutton->setText(tr("修改"));

 flag = !flag;
------解决方案--------------------
不行。 那你这样永远只能显示保存,
if(!m_pushButton->isChecked())
{
m_pushButton->setText("保存");
}else
{
m_pushButton->setText("修改");
} 如果连接的是没有bool的信号,就这样写。
------解决方案--------------------
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
explicit Widget(QWidget *parent = 0);
~Widget();

private slots:
void on_pushButtonS_clicked();

void on_pushButtonM_clicked();

private:
Ui::Widget *ui;
};

#endif // WIDGET_H



#include "Widget.h"
#include "ui_Widget.h"

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->pushButtonS->hide();
}

Widget::~Widget()
{
delete ui;
}

void Widget::on_pushButtonS_clicked()//保存按钮
{
ui->pushButtonM->show();
ui->pushButtonS->hide();
}

void Widget::on_pushButtonM_clicked()//修改按钮
{
ui->pushButtonM->hide();
ui->pushButtonS->show();
}