现在的软件很多都支持双击重命名的操作,就像在windows下对某个文件夹重命名一样(如下图)

Qt之控件重命名

不巧之前也遇到过类似的设计问题,不过是在界面上对某个控件。现在整理一下,控件就用QPushButton来代替。

对一个Button双击重命名,其实总结起来就是一下几点:

1、鼠标双击开始重命名,也就是一个QLineEdit完全覆盖之前的Button

2、鼠标点击其他区域,退出重命名状态,保留之前的名字

3、按下键盘的回车键,完成重命名操作,显示新的名字

下面开始一步一步来。

首先第一点。一个Button能够支持鼠标的双击操作,那肯定是必须重写mouseDoubleClickEvent()这个函数,于是自定义一个子类MyButton,继承自QPushButton,重新实现那个函数。在函数体中,检测是否是鼠标左键按下(因为双击鼠标左键触发重命名),然后显示一个QlineEdit(暂时是它,后面还要改变),同时指定它的父类是MyButton,大小与MyButton一样,就可以完全覆盖之前的Button。QLineEdit中的selectAll()函数可以全选当前内容,当然最后不能忘记调用QPushButton本身的mouseDoubleClickEvent()。代码和实现的效果如下

void MyButton::mouseDoubleClickEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
        edit->setParent(this);
        QString ButtonText = this->text();
        edit->setText(ButtonText);
        edit->resize(this->size());
        edit->show();
        edit->setFocus();
        edit->selectAll();
        QPushButton::mouseDoubleClickEvent(event);
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2021-09-27
  • 2021-10-12
  • 2021-11-18
  • 2021-10-13
  • 2021-11-18
猜你喜欢
  • 2021-12-31
  • 2022-02-13
  • 2021-07-17
  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
  • 2022-12-23
相关资源
相似解决方案