- 主题:QFileDiaglog::getExistingDirectory反应时间过长
界面上用了一个复选框 checkbox
打上勾直接打开目录那个对话框
void MainWindow::on_chkLocal_stateChanged(int arg1)
{
if(arg1)
{
QDir oQDCurDir = QDir::currentPath();
QString oQStrPath = QFileDialog::getExistingDirectory(this, "Local data path ...", oQDCurDir.absolutePath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks );
QDebug() << oQStrPath;
}
}
每次点击这个复选框之后程序要反应一下 转个圈圈才能弹出对话框 是用法不对吗
--
FROM 58.128.3.*
google里得到的结果和你猜测的类似 然后我默默打开了一个windows自带的软件 发现都会转一下 可能比我的程序转的时间短一点
【 在 hgoldfish 的大作中提到: 】
: 是不是 windows 的问题。。因为 windows 有一堆的 explorer 插件。
:
--
FROM 58.128.3.*
这个尝试过 转就不会出现了 但是仍然会延时一下才打开 不知道是不是要读文件系统那些个工作的原因
另外遭遇了一个问题 静态调用这个目录函数后 用QString的实例.isNull()判断是否通cancel或直接点x关闭 这里出错了 QString的实例不允许操作的样子 程序断了之后直接重定位到vector头文件里去了
【 在 hgoldfish 的大作中提到: 】
: 有个办法,可以用 qt 自带的文件对话框。
: 最后一个 option 参数加上` | QFileDialog::DontUseNativeDialog` 这个值就行了。
:
--
FROM 58.128.3.*
代码就是我发上来的那部分 后边加了一个 if(oQStrPath.isNull())
是判断方式不对吗 oQStrPath不是个动态的
【 在 hgoldfish 的大作中提到: 】
: 判断 .isNull() 出错。。多半是你的代码问题。。比如你用了引用付给其它函数?
:
--
FROM 58.128.3.*
发现了 是后边一个遍历目录的函数 因为QString没值 遍历目录函数编译逻辑上没法通过
【 在 hgoldfish 的大作中提到: 】
: 再仔细看看吧。。一般还是程序员自己的问题。
: 另外我比较推荐 QString::isEmpty() 判断字符串是否为空字符串。而非 isNull()
:
--
FROM 58.128.3.*
QString lireReg(const QString & poQStr = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography");
QSettings oQSettings(poQStr, QSettings::NativeFormat);
return oQSettings.value("MachineGuid",QVariant()).toString();
这么读是不是不正确 读的内容是""
--
FROM 123.122.158.*
感谢分享 我现在单一windows上 返回一直是空值
【 在 hgoldfish 的大作中提到: 】
: 抄一段代码给你。
: QString getMachineId()
: {
: ...................
--
FROM 123.122.158.*
打开reg看这个键值是有值的 就是一长串uid
用的我自己的代码 debug时也可以看到键值上层的路径串的内容是正确的
然后加上了你的那个trimmed()也没有改观 之前我代码里在"MachineGuid"后边有一个"0"或QVariant()把
这个也去掉了 读回来的还是空值
【 在 hgoldfish 的大作中提到: 】
: 你打开注册表编辑器看一下,看是什么情况。
: 你是用我的代码返回空值,还是你的代码返回空值?
:
--
FROM 123.122.158.*