为了更好的写好与布局有关的代码,杰洛君这几天花了一点时间去整理代码,来跟着杰洛君写比较复杂的控制台的代码吧~
控制台的布局
根据前几篇文章中看到的布局图,杰洛君知道,这个地方最终一定是一个很大的水平布局。
以水平布局去看的话,这个界面分为4个部分。
- 1.连接服务器按钮+状态栏+二维码按钮
- 2.一个分隔栏
- 3.一列可选按钮
- 4.一列滑动条
接下来就根据这四个部分来写界面吧~
第一部分
连接服务器按钮,自然是用一个QPushButton了,在这个程序中杰洛君把它称为connectBut
。
代码一如既往得耿直:
connectBut = new QPushButton(this);
connectBut->setText("连接服务器");
connectBut->setFixedSize(200,80);
不过默认的字体不一定好看。
这时就需要添加自己的字体文件了,这里杰洛君使用的是 熊猫的一天.ttf
。
把这个文件添加进资源文件中,起个好听的别名就可以在程序中使用了~
在mainwindow.h添加QFontDatabase的头文件,再在构造函数中加上代码:
int loadedFontID = QFontDatabase::addApplicationFont(":/project/dingding.fon"); //加载字体到字体数据库,字体文件放在资源文件中
QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(loadedFontID); //在字体数据库中找我们的这个字体,找到就调用。
if(!loadedFontFamilies.empty())
myFontStr = loadedFontFamilies.at(0);
其中这里的myFontStr
是一个QString 类型。不过这个值要保存好,以后需要用新字体的地方都需要用到它。
用法:
connectBut->setFont(QFont(myFontStr,20,1));
状态栏statusLabel
就是一个QLabel 而已, 利用void setText(const QString &) 函数设置它的内容就可以了。
//服务器按钮下方的状态栏文字,不过这里和那个显示二维码的按钮一起布局了
statusLabel = new QLabel("当前状态:未连接",this);
statusLabel->setFixedWidth(285);
statusLabel->setFont(QFont(myFontStr,20,1));
qrencodeBut = new Q