nihui 发表于 2009-12-20 13:13:49

qt4 宽带网络配置向导的半成品...

原本是不想把这半成品放上来的,但是看到置顶帖里又有人说键盘失效的问题,所以就忍不住放上来了。。。

我极度厌恶键盘失效的问题,首次启动到欢迎界面就卡住实在太不友好了。。。

半成品而已,只是个框架,可以识别网卡等设备,但是应用部分没有写,最近没空了,有人要接么,这样就可以把首次启动的欢迎界面转到 X window 里了。 :wink:

zy_sunshine 发表于 2009-12-20 15:31:21

支持:-D
stronghill也在写一个简单的修改ip的程序......:twisted:

stronghill 发表于 2009-12-20 17:24:52

唉,我正好在出差,机器还给坏了,估计下下周才能继续做

zy_sunshine 发表于 2009-12-20 23:26:31

几个问题:
1、DefaultGatePage 配置的默认网关要修改哪个文件,是否是/etc/sysconfig/network-scripts/ifcfg-eth*文件?
2、StartCfgPage地方是否要有一个选择配置哪个网卡,亦或在最后来个循环配置多个网卡。
3、TCPIPInfoPage页面是否想要显示配置前的网卡信息,如果是这样的话,可否在ConclusionPage页面后再加一个TCPIPInfoPage(finished)

haulm 发表于 2009-12-21 11:16:18

还没有翻译,打开源码看了看。

nihui 发表于 2009-12-21 12:18:12

原帖由 haulm 于 2009-12-21 11:16 发表 http://www.linuxfans.org/bbs/images/common/back.gif
还没有翻译,打开源码看了看。

本来就是半成品。。。:mrgreen:

zy_sunshine 发表于 2009-12-23 10:12:17

nihui你现在正在做这个吗? 希望rc2 或者正式版中能加上这个。

zy_sunshine 发表于 2009-12-23 20:06:53

我在accept里面处理field,在编译的时候出现错误。
void Wizard::accept()
{
    QString defaultgateip=QWizard::field("defaultgateip").toString();

    // finish TODO:
    QDialog::accept();
}

$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/lib/qt4/mkspecs/linux-g++ -I. -I/usr/lib/qt4/include/QtCore -I/usr/lib/qt4/include/QtGui -I/usr/lib/qt4/include -I. -I. -o wizard.o wizard.cpp
wizard.cpp: In member function ‘virtual void Wizard::accept()’:
wizard.cpp:43: 错误:invalid use of incomplete type ‘struct QVariant’
/usr/lib/qt4/include/QtCore/qobject.h:66: 错误:forward declaration of ‘struct QVariant’
wizard.cpp:43: 警告:未使用的变量‘defaultgateip’
make: *** 错误 1
$

nihui 发表于 2009-12-24 00:23:40

原帖由 zy_sunshine 于 2009-12-23 10:12 发表 http://www.linuxfans.org/bbs/images/common/back.gif
nihui你现在正在做这个吗? 希望rc2 或者正式版中能加上这个。

我现在没有做,最近两个月也不会做。。
楼上的错误只需在源文件里面加 #include <QVariant> 就能编译了。

zy_sunshine 发表于 2009-12-24 00:33:22

我在考虑怎么做这个,但是有些地方非常棘手。现在就碰见一个。
如果我想要做一个多网卡的配置,每个网卡配置过程循环一次。
但是WizardPage不能往回跳转。所以页面不能重复用,这里有没有什么好的办法实现多网卡循环配置?

nihui 发表于 2009-12-24 01:38:37

原帖由 zy_sunshine 于 2009-12-24 00:33 发表 http://www.linuxfans.org/bbs/images/common/back.gif
我在考虑怎么做这个,但是有些地方非常棘手。现在就碰见一个。
如果我想要做一个多网卡的配置,每个网卡配置过程循环一次。
但是WizardPage不能往回跳转。所以页面不能重复用,这里有没有什么好的办法实现多网卡循环配置? ...

http://doc.trolltech.com/4.6/qwizard.html
参考 Creating Non-Linear Wizards 一节的部分
创建枚举值,重写页面的 nextId() 函数,返回要跳转目标的页面枚举值。
:wink:

zy_sunshine 发表于 2009-12-24 08:40:35

回复 11# nihui 的帖子

:shock: 枚举值,这么多年了,终于用到这个东西了。谢谢nihui:lol:

zy_sunshine 发表于 2009-12-24 09:29:38

QWizard::next: Page 1 already met
如果枚举不能动态定义,页面不能动态添加,还是不能达到循环配置网卡,页面还是不能重复使用。
Creating Non-Linear Wizards这一节用的页面也都是事先定义好的,只是走的顺序不同。

看样Qt真的不是太灵活o,在动态方面。如C++一样。

nihui 发表于 2009-12-24 12:18:16

initializePage() 可以改页面内容的啊:wink:

zy_sunshine 发表于 2009-12-24 14:50:26

nihui 你看看我这个写的可以不,功能看看就好,里面写稍微有些麻烦,感觉很丑:mrgreen:
而且改了你的页面次序和一点功能。
次序是这样的
    int pagecount=1;
    setPage(pagecount, new IntroPage );pagecount++;
    setPage(pagecount, new NetCardPage );pagecount++;
    for(int i=0; i < netcardList.count(); ++i){
      setPage(pagecount, new StartCfgPage );pagecount++;
      setPage(pagecount, new TCPIPInfoPage );pagecount++;
      setPage(pagecount, new TCPIPCfgPage );pagecount++;//我把defaultgateway页面放到这里面了。

      setPage(pagecount, new RootlessPage );pagecount++;
      setPage(pagecount, new BootActivatePage );pagecount++;
      setPage(pagecount, new ConclusionPage );pagecount++;
    }
    setPage(pagecount, new DNSCfgPage );pagecount++;//我把dns放到最后来配置,配置resolve.conf文件
    setPage(pagecount, new ThanksPage );pagecount++;
    setStartId(1);如果实现多循环配置,必须先new好页面,所以我就用了一个for循环......还加了几个全局变量在wizard.cpp页面
我是在windows下做的,因为linux下创建工程的时候竟然没有标准empty工程 ....我手生得很,所以又去windows了:mrgreen:
要修改的文件流都放在了QStringList lines;里面了,移到linux下只要把lines覆盖到文件就好了。

[ 本帖最后由 zy_sunshine 于 2009-12-24 14:52 编辑 ]
页: [1] 2 3
查看完整版本: qt4 宽带网络配置向导的半成品...