• 11399阅读
  • 11回复

【讨论】Qt对话框的自定义 [复制链接]

上一主题 下一主题
离线myer
 

只看楼主 倒序阅读 楼主  发表于: 2005-12-08
看了论坛里有几篇讨论汉化Qt系统对话框的帖子,提供的方法主要是使用Qt的翻译系统即配置.qm文件信息,就想有没有更简单的方法。。。
呵呵,终于觅得方法一:(但是不能使用类的静态方法了:P)
例子代码如下:
     QFileDialog dlg;
     QList<QPushButton *> lists = dlg.findChildren<QPushButton *>();
     foreach(QObject *obj, lists)
     {
           QPushButton *button = qobject_cast<QPushButton *>(obj);
           if(button->text() == "Open")
                 button->setText("asdf");
     }
     dlg.exec();
Qt4下面测试通过,欢迎大家讨论一下这个话题,好像大家用的还挺多的。
http://user.qzone.qq.com/56430808
离线myer

只看该作者 1楼 发表于: 2005-12-08
哈哈
自己置顶一周,欢迎讨论相关话题。
http://user.qzone.qq.com/56430808
离线XChinux

只看该作者 2楼 发表于: 2005-12-08
这种方法也可行,但我总觉得这不是推荐的使用方法。一个是我们要翻译的文字,我们可能根本就找不全,不知道该翻译哪些,另一方面,这种循环设置可重用性不高。解决个别问题可以,但不能作为通用方法。
因为那些系统对话框的源文件中使用的就是英文,所以根源上还是使用.qm翻译文件比较妥当。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线myer

只看该作者 3楼 发表于: 2005-12-09
这里提供了一种思路,汉化不是主要目的,只是附加解决而已
主要是可以利用Qt的对话框资源,自定义为自己的对话框
例如:加入删除按钮,自定义自己的处理函数等等等等
http://user.qzone.qq.com/56430808
离线csoapy

只看该作者 4楼 发表于: 2007-03-02
自定义对话框,是指用designer拖一个widget?生成相应的.ui文件,再用uiLoader加载?这样的话主对话框关闭后,它还留在那里,当然也可以自己决定什么时候关闭,但是麻烦。
离线445363200
只看该作者 5楼 发表于: 2009-02-03
我一般在文件中读入,文件中的文字是什么样,读入之后,显示就会是怎么样,所以我个人认为从文件中读入文字也是一个不错的方法
离线wd007

只看该作者 6楼 发表于: 2009-02-03
楼上的说法我很怀疑,在不同平台上,编码格式不同,显示有可能是乱码
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
只看该作者 7楼 发表于: 2009-02-03
引用第6楼wd007于2009-02-03 20:01发表的  :
楼上的说法我很怀疑,在不同平台上,编码格式不同,显示有可能是乱码

不会……按utf8保存着就不会
离线wd007

只看该作者 8楼 发表于: 2009-02-03
如果一个是utf8,一个是gb2312,就有可能有问题。
比如OpenSuSE 10.2中默认是utf-8,但win上是gb2312.
用KDevelop编译出来的程序到了win上就是乱码。
需要将KDevelop的编码改为与win一致,就是两者保持一致。
因为KDevelop默认采用KDE的utf-8。
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
只看该作者 9楼 发表于: 2009-02-03
引用第8楼wd007于2009-02-03 22:03发表的  :
如果一个是utf8,一个是gb2312,就有可能有问题。
比如OpenSuSE 10.2中默认是utf-8,但win上是gb2312.
用KDevelop编译出来的程序到了win上就是乱码。
需要将KDevelop的编码改为与win一致,就是两者保持一致。
因为KDevelop默认采用KDE的utf-8。

注意是读取文件,不是编译源文件
读取的文本文件按utf8保存那是完全没有问题的
离线wd007

只看该作者 10楼 发表于: 2009-02-04
从文件中读入数据后,程序不需要编辑吗,在不同的平台上这个问题无法消除阿,还是我的理解有问题
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线robertkun

只看该作者 11楼 发表于: 2009-05-27
           if(button->text() == "Open")
                 button->setText("asdf");
---------------------------------------------------------------------

楼主这句话的意思是什么?哪位知道的告诉我一声。谢谢。
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个