QLineEdit的美化(支持内置按钮 自定义图标)

QLineEdit其实是支持动态显示删除按钮的,现代UI也都是采用这种方式的。

通过函数

filterLineEdit->setClearButtonEnabled(true);

但是这个自带的按钮是黑白的,我们想改掉它的icon图片,那么就需要得到这个内置的删除按钮,而这个删除按钮不对外开放,我们需要通过 

findChild 函数把这个控件找出来,对它进行setIcon操作,就可以了。

此外,还可以给QLineEdit在前后增加action,用addAction函数就可以。

示例代码如下:

        {   //添加过滤器编辑器框,这里实现了漂亮的控件了
            QLineEdit* filterLineEdit = new QLineEdit;
            filterLineEdit->setPlaceholderText("文件名过滤器");
            //        filterLineEdit->setToolTip("");
            filterLineEdit->setClearButtonEnabled(true);
            //        filterLineEdit->addAction(ui->actionOpen_Folder, QLineEdit::LeadingPosition);
            
            //哈哈,我这样写太牛逼了,直接把内置的action给拿出来了
            QAction* actionClear =  (filterLineEdit->findChild<QAction*>("_q_qlineeditclearaction"));
            if(actionClear)
                actionClear->setIcon(QIcon(":/icons/images_pro/delet.svg"));
            
//            qDebug()<<"filterLineEdit->actions().size(): "<<filterLineEdit->actions().size();
//            qDebug()<<"filterLineEdit->children(): "<<filterLineEdit->children();
            hlayout->addWidget(filterLineEdit);
        }

猜你喜欢

转载自blog.csdn.net/kangkanglhb88008/article/details/128160049