如何在自定义文件浏览对话框Qt C++中实现返回和下一步按钮
Posted
技术标签:
【中文标题】如何在自定义文件浏览对话框Qt C++中实现返回和下一步按钮【英文标题】:How to implement back and next button in custom file browse dialog Qt C++ 【发布时间】:2018-03-06 10:38:13 【问题描述】:我正在实现基于 Qt 的自定义文件打开对话框,因为本机 QFileDialog 导致我的应用程序出现一些阻塞。我能够执行以下操作。
首页链接 桌面链接 父链接(向上按钮) 双击导航到目录但是找不到怎么办
上一个链接 下一个链接那么如何在 Qt5 中使用 C++ 做到这一点?
【问题讨论】:
您是否尝试将QFileDialog::DontUseNativeDialog
传递给QFileDialog
c'tor 并调用show()
,而不是重写您自己的对话框?这不应该阻止您的应用程序
“我的应用程序受到一些阻碍”是什么意思?如果它与窗口模式有关,那么你应该看看这个***.com/questions/24279382/…
【参考方案1】:
我把它改成
struct BrowsingHistory
QString dir;
BrowsingHistory * next;
BrowsingHistory * prev;
BrowsingHistory(const QString & path = "") :
dir(path),
next(0),
prev(0)
;
BrowsingHistory *m_history;
BrowsingHistory *m_historyHead;
在构造函数中我初始化为 ..
m_history = m_historyHead = new BrowsingHistory(/*Your default location*/);
m_historyHead 用于析构函数中的内存释放,因为它总是指向列表的开头(基本上 struct BrowsingHistory 是 LinkedList 实现)
while(m_historyHead)
BrowsingHistory * temp = m_historyHead;
m_historyHead = m_historyHead->next;
delete temp;
m_history : 始终指向当前路径。
点击desktopButton、homeButton、parentButton,我调用了RegisterHistory(),它定义为...
void RegisterHistory(const QString& dirPath)
if(m_history->dir != dirPath)
if(m_history->next)
m_history->next->dir = dirPath;
m_history = m_history->next;
BrowsingHistory * currentHistory = m_history->next;
while(currentHistory)
BrowsingHistory * temp = currentHistory;
currentHistory = currentHistory->next;
delete temp;
m_history->next = 0;
else
BrowsingHistory * currentHistory = new BrowsingHistory(dirPath);
currentHistory->prev = m_history;
m_history->next = currentHistory;
m_history = m_history->next;
现在这里是下一个和上一个插槽:
void btnNext_Clicked()
if(m_history && m_history->next)
QString dirPath = m_history->next->dir;
ui->listFileView->setRootIndex(m_pDirModel->setRootPath(dirPath));
m_history = m_history->next;
void btnBack_Clicked()
if(m_history && m_history->prev)
QString dirPath = m_history->prev->dir;
ui->listFileView->setRootIndex(m_pDirModel->setRootPath(dirPath));
m_history = m_history->prev;
【讨论】:
以上是关于如何在自定义文件浏览对话框Qt C++中实现返回和下一步按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义 delphi 组件中实现 stringlist 属性?
如何在自定义 OLE 对象中实现类似 Excel 的 OLE 链接行为
如何在自定义 Spring 存储库中实现自定义方法? [复制]