• 8530阅读
  • 32回复

【菜鳥求助】QT 大侠帮忙!在线等~ [复制链接]

上一主题 下一主题
离线annywill
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-07
— 本帖被 XChinux 从 Qt Installing & Deployment 移动到本区(2008-11-30) —
我是新手,
要做一个保存文件用的,现在只能显示D盘或者C盘的目录,想再上一层,就是说可以显示C,D以及所有硬盘,还要是Qstring型的,怎么解决??不是那种列表的形式。。。谢谢
class Saveas : public QDialog//另存为对话框
{
    Q_OBJECT

public:
    Saveas(QString &dir,QString &defsavnam,QStringList fillter,bool b);//构造函数  注意第一个参数Qstring。。。


。。。。。。


void MainWidget::onSaveAsButton(void)      //槽
{
    QStringList b;
    b<< "*.bmp" << "*.png" << "*.jepg";
    Saveas saveas(tr("D:\\"),tr("MM.bmp"),b,true);                    //-------------------现在这样只能显示D盘
    saveas.exec();
}
离线annywill
只看该作者 1楼 发表于: 2008-11-07
这里能发图片吗???
离线annywill
只看该作者 2楼 发表于: 2008-11-07
继续等。。。。
离线annywill
只看该作者 3楼 发表于: 2008-11-07
离线annywill
只看该作者 4楼 发表于: 2008-11-07
离线annywill
只看该作者 5楼 发表于: 2008-11-07
离线annywill
只看该作者 6楼 发表于: 2008-11-07
帮帮忙吧。。。。



急!!!!
离线annywill
只看该作者 7楼 发表于: 2008-11-07
没人。。。


唉。。
离线xiachm

只看该作者 8楼 发表于: 2008-11-07
我觉得很奇怪,你想做什么东西?保存窗口是Qt提供的,你为啥要自己实现??
离线annywill
只看该作者 9楼 发表于: 2008-11-07
引用第8楼xiachm于2008-11-07 15:13发表的  :
我觉得很奇怪,你想做什么东西?保存窗口是Qt提供的,你为啥要自己实现??



因為編這個東西可能不是在windows下運行,而且不能盜版。。。

它的界面風格和windows完全不一樣。。。。

都得自己編。。。

具體我也不清楚。。。老大交來的任務。。。
离线annywill
只看该作者 10楼 发表于: 2008-11-07
或者提供一個

获取本计算机全部硬盘的地址的函数什么的也行。。。


一点头绪都没有。。。。哎。。
离线xiachm

只看该作者 11楼 发表于: 2008-11-07
去问问你老大,他想让你比着Windows的保存窗口做一个和它一模一样的吗?
离线xiachm

只看该作者 12楼 发表于: 2008-11-07
我认为你的思路不太对,因为你刚才说“編這個東西可能不是在windows下運行”,你要知道除了Windows有盘符之外,其它系统一般是没有的,你干嘛非要得到盘符呢????
离线annywill
只看该作者 13楼 发表于: 2008-11-07
引用第11楼xiachm于2008-11-07 15:27发表的  :
去问问你老大,他想让你比着Windows的保存窗口做一个和它一模一样的吗?



当然不一样。不是那种下拉菜单的。。显示D盘的我已经实现了。。。
就是按保存后,会出现D盘按钮以及D盘下的文件,问题就是,不一定要存D盘啊,如果让客户有所选择,就需要再上一级

最好有个能获取全部硬盘地址的函数,然后点击保存,就会弹出C,D,E...各盘,让用户选择。。。

真想发图,不知道能不能发。。。
离线annywill
只看该作者 14楼 发表于: 2008-11-07
引用第12楼xiachm于2008-11-07 15:33发表的  :
我认为你的思路不太对,因为你刚才说“編這個東西可能不是在windows下咝小保?阋??莱?薟indows有盘符之外,其它系统一般是没有的,你干嘛非要得到盘符呢????



目前是在windows下的,因为有些人做的不是windows,我才这样想的。。因为前面有些大程序是其他同事已经弄好的,我们只是觉得不完善,改进。。。

如果不用盘符,能达到我们的效果又不是改动很大,也很不错哦。。。
离线annywill
只看该作者 15楼 发表于: 2008-11-07
也不知道我说明白了没。。。。


哎。。。
离线xiachm

只看该作者 16楼 发表于: 2008-11-07
我还没找到这个函数,不过有一个笨办法,从C盘开始,在每个盘上创建一个文件,如果成功说明分区存在,然后删除这个文件,如果不成功说明分区不存在。
离线annywill
只看该作者 17楼 发表于: 2008-11-07
引用第16楼xiachm于2008-11-07 15:47发表的  :
我还没找到这个函数,不过有一个笨办法,从C盘开始,在每个盘上创建一个文件,如果成功说明分区存在,然后删除这个文件,如果不成功说明分区不存在。


我大致明白你的意思。。。

我差点就这么干了,从C开始浏览,如果不保存的C,就从C后退,进入D,。。。。继续进
离线xiachm

只看该作者 18楼 发表于: 2008-11-07
有啦!!!QFileInfoList QDir::drives ()
离线annywill
只看该作者 19楼 发表于: 2008-11-07
引用第18楼xiachm于2008-11-07 15:55发表的  :
有啦!!!QFileInfoList QDir::drives ()



这个,我看到过。。。好像是列表那种,这个是封装好的,不知道怎么按到我的程序里。。。
离线xiachm

只看该作者 20楼 发表于: 2008-11-07
这是QDir的一个静态成员,和界面没有关系,QFileInfoList Synonym for QList<QFileInfo>
离线annywill
只看该作者 21楼 发表于: 2008-11-07
引用第20楼xiachm于2008-11-07 16:02发表的  :
这是QDir的一个静态成员,和界面没有关系,QFileInfoList Synonym for QList<QFileInfo>



我研究一下,最好能有个汉化教程。。。-_-!

这个你用过吗?

谢谢哈。。。
离线xiachm

只看该作者 22楼 发表于: 2008-11-07
QFileInfoList list = QDir::drives();

foreach (QFileInfo info, list)
{
    qDebug() << info.path();
}
离线annywill
只看该作者 23楼 发表于: 2008-11-07
引用第22楼xiachm于2008-11-07 16:22发表的  :
QFileInfoList list = QDir::drives();
foreach (QFileInfo info, list)
{
    qDebug() << info.path();
.......



怎么把地址弄成QString型呢???

函数调用的是QString型,如果改动,怕牵扯大。。
离线annywill
只看该作者 24楼 发表于: 2008-11-07
引用第22楼xiachm于2008-11-07 16:22发表的  :
QFileInfoList list = QDir::drives();
foreach (QFileInfo info, list)
{
    qDebug() << info.path();
.......



我的意思是怎样吧这个得到的地址返回QString型。。。

因为构造函数是这样的,第一个参数为QString型
Saveas(QString &dir,QString &defsavnam,QStringList fillter,bool b);
离线xiachm

只看该作者 25楼 发表于: 2008-11-07
你看一下帮助,path()返回的就是一个QString
离线annywill
只看该作者 26楼 发表于: 2008-11-07
引用第25楼xiachm于2008-11-07 16:50发表的  :
你看一下帮助,path()返回的就是一个QString



==,效果比以前好了,但是还有些小问题
比如现在的效果是按“保存”
出来widget,显示A:/,取消后,又出来一个widget,显示C,。。。显示D

不可以按保存后,显示有所有盘,A,C,D,...,然后客户根据需要进行选择。。。。
离线annywill
只看该作者 27楼 发表于: 2008-11-07
引用第25楼xiachm于2008-11-07 16:50发表的  :
你看一下帮助,path()返回的就是一个QString



忘记说了,真的太感谢你了。。。终于看到希望了。。。


谢谢!!!!!!
离线annywill
只看该作者 28楼 发表于: 2008-11-07
引用第25楼xiachm于2008-11-07 16:50发表的  :
你看一下帮助,path()返回的就是一个QString



不知道可不可以按保存后,显示有所有盘,A,C,D,...,然后客户根据需要进行选择。。。。
离线annywill
只看该作者 29楼 发表于: 2008-11-07
获取盘符的同时,可不可以略掉A盘呢???
离线xiachm

只看该作者 30楼 发表于: 2008-11-08
显示有所有盘,A,C,D,...,然后客户根据需要进行选择

可以使用QListWidget

获取盘符的同时,可不可以略掉A盘呢?

当然了,你不处理不就行了,这儿你需要了解一下QString强大的字符串处理能力。
离线annywill
只看该作者 31楼 发表于: 2008-11-10
引用第30楼xiachm于2008-11-08 08:19发表的  :
显示有所有盘,A,C,D,...,然后客户根据需要进行选择
可以使用QListWidget
获取盘符的同时,可不可以略掉A盘呢?
.......

QListWidget是固定的界面形式吧,我說的是函數,因為界面和經典的不同。。。

不想讓這個函數遍歷A盤,因為实在太慢了,可是怎么弄呢?
离线annywill
只看该作者 32楼 发表于: 2008-11-11
       
快速回复
限100 字节
 
上一个 下一个