本帖最后由 xingyun86 于 2025-10-12 14:53 编辑
Qt简洁大方的带搜索编辑框 (精益论坛首发)
各类桌面项目开发中,经常会遇到输入搜索框。
现在根据经验做了一个常用功能的编辑框。
用的是自己编译玩的静态QT IDE
该控件也可以做成DLL,供任何编程语言调用 若大家有需要,请在评论区留言, 需求量大的话,我就做成DLL再发出来给大家。
测试例子是
绿色免安装,单文件,永久支持下载!
底部有demo下载链接和源代码下载链接。
输入文本之后搜索按钮会自动变成清除按钮
清除文本之后,清除按钮又会重新变回搜索按钮。
左右测试输入文本的历史列表。
下面给一个完整的操作动画给大家看一下。
关键代码,参数初始化如下
[C++] 纯文本查看 复制代码 m_pSearchAction = new QAction;
m_pSearchAction->setToolTip("搜索");
m_pSearchAction->setIcon(QIcon(":/res/search.png"));
m_pDownmenuAction = new QAction;
m_pDownmenuAction->setToolTip("下拉");
m_pDownmenuAction->setIcon(QIcon(":/res/downmenu.png"));
ui->lineEdit->setPlaceholderText("请输入你想要搜索的内容");
m_pSubMenu = new QMenu("子菜单");
m_pSubRecentlyAction = new QAction("Recently");
m_pSubRecentlyAction->setIcon(QIcon(":/res/history.png"));
m_pSubRecentlyAction->setDisabled(true);
m_pSubClearallAction = new QAction("Clearall");
m_pSubClearallAction->setIcon(QIcon(":/res/delete.png"));
m_pSubMenu->addAction(m_pSubRecentlyAction);
m_pSubSeparator = m_pSubMenu->addSeparator();
m_pSubMenu->addAction(m_pSubClearallAction);
m_pDownmenuAction->setMenu(m_pSubMenu);
ui->lineEdit->addAction(m_pDownmenuAction, QLineEdit::TrailingPosition);
ui->lineEdit->addAction(m_pSearchAction, QLineEdit::TrailingPosition);
connect(m_pDownmenuAction, SIGNAL(triggered(bool)), this, SLOT(slot_action_downmenu(bool)));
connect(m_pSubClearallAction, SIGNAL(triggered(bool)), this, SLOT(slot_action_clearall(bool)));
connect(m_pSearchAction, SIGNAL(triggered(bool)), this, SLOT(slot_action_search(bool)));
以下为文本改变时的响应处理代码:
[C++] 纯文本查看 复制代码 void MainWindow::on_lineEdit_textChanged(const QString &arg1)
{
if(ui->lineEdit->text().isEmpty() == false)
{
m_pSearchAction->setToolTip("清除");
m_pSearchAction->setIcon(QIcon(":/res/close.png"));
if(FoundExistAction(ui->lineEdit->text(), m_pSubMenu->actions()) == nullptr)
{
QAction* pAction = new QAction(ui->lineEdit->text());
m_pSubMenu->insertAction(m_pSubSeparator, pAction);
}
}
else
{
m_pSearchAction->setToolTip("搜索");
m_pSearchAction->setIcon(QIcon(":/res/search.png"));
}
}
提取码:jz8w
复制这段内容后打开百度网盘手机App,解压密码:1-8。操作更方便哦
提取码:sma6。 解压密码:3到1再到9.
========================================================== 为爱发电,永不止息! ==========================================================
|