这貌似是俩不想干qt的exe文件怎么看源码的功能qt的exe文件怎么看源码,但它们的确是我马上要解决的问题qt的exe文件怎么看源码,因为原本想在下面放二维码的地方,一直都忘了放了[黑线];而且我也忘了做打开文件夹并自动选择文件的这个方便的功能。开写。
和QMediaPlayer一样,在QT的控件面板中并没有显示图片的控件件,而是需要和QMediaPlayer一样,要用个占位的控件,然后再用代码创建位图,再画到控件上。
这好像是一个进化不完全的类人猿一样。。。
网上的教程一般都是新建一个Lable,那我们就顺竿爬。
布局调整完后,就是下面这个样子:
调整完后的布局
对象管理器关系树:
对象关系树
下面我们先看载入图片并显示到Lable里的代码:
QPixmap pic_NoWater(QCoreApplication::applicationDirPath().append("/nowater.jpg")); QPixmap pic_Chengyu(QCoreApplication::applicationDirPath().append("/chengyu.jpg")); QPixmap pic_Zhang(QCoreApplication::applicationDirPath().append("/zhang.jpg")); ui->lb_Pic1->setPixmap(pic_NoWater); ui->lb_Pic2->setPixmap(pic_Chengyu); ui->lb_Pic3->setPixmap(pic_Zhang);代码中的QCoreApplication::applicationDirPath()是获取EXE文件所在的目录,上面的那三行代码是读取EXE目录中的三张图片,下面三行,是将这三张图片显示到Label中,肿么样?看看效果:
图片显示出来了
当然了,为了稍微安全点,我们还可以把这三张图片放入我们的资源文件中,这样会在编译时被编译到EXE文件中。但是EXE文件也会相应地增大,在这里我没有放,就样先以文件的方式暴露着就行。
下面实现打开文件夹和打开文件夹并选中文件的功能。
首先是“打开文件夹”的 *** :
//要 include <QDesktopServices>QDesktopServices::openUrl(QUrl("file:"+ui->le_DirPath->text(), QUrl::TolerantMode));//这个 *** 是QT原生的,应该能自动处理跨平台的情况,所以我们先这样。唉,真是简单,毫无压力,现在写个程序真是省事。要注意那个"file:",路径前面不带这个"file:"也是可以打开文件夹的,但是打不开带空格的路径的,比如"C:/xxx xxx xxx"这样的,不加"file:"是打不开的。
其次是“打开文件夹并选中文件”的 *** :这个在QT中貌似没有,这个就需要我们自己来针对不同平台写不同的代码了,再用条件编译来处理跨平台的情况。
按钮点击和打开文件夹/文件的代码如下,注释很清楚:
void MainWindow::on_btn_OpenFolder_clicked(){ if(this->videoFileName.length() > 8){ //如果刚才下载了文件(最后一次下载文件名长度大于8) //就执行打开资源管理器并选中该文件 openFolderAndSelectFile(videoFileName); }else{ //否则,就打开窗体中定义的下载目录 QDesktopServices::openUrl(QUrl("file:"+ui->le_DirPath->text(), QUrl::TolerantMode)); }}void MainWindow::openFolderAndSelectFile(QString downLoadFile){ //打开资源管理器,并选中该文件#ifdef WIN //Windows平台代码,上面那个WIN是在.pro文件里预先定义的。在其它平台时改一下就行。 if (downLoadFile.length() > 8){ QProcess process(this); //要用这个来运行系统命令来达到目的 process.startDetached("explorer /select,\"" + downLoadFile.replace("/","\\") + "\""); //注意,explorer的路径分割符号只支持\号,要替换一下 }else{ QMessageBox::critical(this, "错误", "刚才没有下载文件。", QMessageBox::Ok); }#endif#ifdef OSX //MAC下的,在MAC下编译时改一下.pro中的宏定义就行 //这个代码在网上找的,不知道行不行,具体在MAC上编译时再调试 QStringList scriptArgs; scriptArgs << QLatin1String("-e") << QString::fromLatin1("tell application \"Finder\" to reveal POSIX file \"%1\"") .arg(downLoadFile); QProcess::execute(QLatin1String("/usr/bin/osascript"), scriptArgs); scriptArgs.clear(); scriptArgs << QLatin1String("-e") << QLatin1String("tell application \"Finder\" to activate"); QProcess::execute("/usr/bin/osascript", scriptArgs);#endif}然后我们需要在下载文件完成时检查一下“下载完成后自动打开”有没有被勾选,如果被勾选了,需要再自动调用一下openFolderAndSelectFile来选择该文件。
if (ui->cb_AutoOpen->isChecked()){ openFolderAndSelectFile(this->videoFileName); }打开文件夹并自动选择文件
完美。
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~