目的
其实就是一个简单的界面显示,是很常用的形式。
说起来简单也是简单,但当初,刚开始做时,感觉非常的复杂,不知如何下手。
现在感觉简单多了。
这个框架利用了QT的现成的MainWindow与QDockWidget,这样就很轻松拥有了界面上的组件。
然则,这离系统要加菜单之类的东西,边界的设置,还是有差距的。
这就用到了,QT的界面组合。
QT的界面可以任意的组合,就像搭建积木一样。
情况
界面:
这一个界面很简单,里面有很多可以扩充的地方,扩充好了,就是一个非常漂亮的系统,上面只是一个界面的架子,其它的东西,包括界面,可以任意向里面填充。
最外层是一个 widget,其包含了MainWindows
关键代码如下:
cpp
MainView_qss::MainView_qss(QWidget *parent) : QWidget(parent)
{
m_mainWindow = new MainWindow();
QVBoxLayout *vlayout_main = new QVBoxLayout();
this->setLayout(vlayout_main);
vlayout_main->setContentsMargins(5,5,5,5);
vlayout_main->setSpacing(0);
......
}
mainwindow可以显示多窗体,其有包括了三个QDockWidget,部分代码如下:
v
cpp
oid MainWindow::initLogView()
{
if (nullptr == m_logView)
{
m_logView = new QDockWidget(this);
//set dock widget feature: not move, enable close.
//|QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable
m_logView->setFeatures(QDockWidget::DockWidgetClosable);
m_logView->setAllowedAreas(Qt::BottomDockWidgetArea);
m_logView->setWindowTitle("日志输出");
m_logView->setMaximumHeight(100*8);
//m_logView->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
m_logBody = new QTextEdit(this);
//m_logBody->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
m_logView->setWidget(m_logBody);
}
......
}
工作区的QDocketWidget又包含了QTabWidget,其里面,又可包含很多窗体,关键代码如下:
cpp
void MainWindow::initWorkSpaceView()
{
if (nullptr == m_workspace)
{
m_workspace = new QTabWidget(this);
m_workspace->setWindowTitle("工作区");
this->setCentralWidget(m_workspace);
......
}
qDebug() << "工作区 id:" << m_workspace->winId() << ", name:" << m_workspace->windowTitle();
}
总结
说起来简单,不会时,也是很头疼,界面,弄明白了,就很简单了,很简单,上面的事事,可以如下图所示: