原创文章,转载请注明出处,谢谢!
作者:清林,博客名:飞空静渡
这里的浏览器的制作是参考易简浏览器来制作的,在查看了易简浏览器的源代码0.45版本后,一步一步构建一个易简浏览器。
易简浏览器遵循GPL来发布,具体可以到易简浏览器主页上下载源代码来查看(http://eazy.uueasy.com/),在写这篇文章时,最新的是0.47版,但现在使用的是0.45版。
这个主界面只是一个未完成的简单的主界面,遵循着一步步构建的步骤,由简单到复杂,最后完成一个浏览器的步骤。
这步的浏览器,没有设计网页,只是一个简单的框架。下一步会构建复杂点的主界面,一步步的添砖加瓦,这也是学习的最好步骤。
我这里的易简浏览器代码和原作者的源代码有些不一样,所以在看我的代码时,要注意一点。代码不单是要看,要抄,还会要修改,这样才会学得到。
开发工具:Qtcreator。
这一个步骤的主界面如下:
下面是代码的简单说明:
主界面是一个MainWindow的类:
mainwindow.h:
主界面的构建如下:
由上面的代码可以看到,主界面用
setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); // no Boarder
去掉了标题栏。
其头部有这几个结构组成:
一个QDockWidget的pMainDockWidget,这个是主的widget,所有widget都在这上面,所以最后会setCentralWidget(pMainDockWiget);
主widget会添加一个
m_pTopTab = new TabToolBar(this, this);
pMainDockWiget->setTitleBarWidget(m_pTopTab);
这是一个网页浏览的tab,这里还没添加实现代码。
下面是一个工具栏,工具栏嵌在QMainWindow中:
QMainWindow *pMainWindow = new QMainWindow(this);
m_pMainToolBar = new ToolBar(this);
pMainWindow->addToolBar(m_pMainToolBar);
pMainDockWiget->setWidget(pMainWindow);
移动界面靠
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
在void mouseMoveEvent(QMouseEvent *event)中:
靠 m_dragPos.y() < 20 这句判断限制只有在头部才可以移动整个界面,这和易简的代码不一样。
移动时如果界面是最大化,则缩小到其前一个状态时的大小。
源代码下载地址:http://download.youkuaiyun.com/source/3236209