用Qt实现一个桌面弹幕程序(七)-- -- 桌面客户端实现③

为了更好的写好与布局有关的代码,杰洛君这几天花了一点时间去整理代码,来跟着杰洛君写比较复杂的控制台的代码吧~

控制台的布局

控制台

根据前几篇文章中看到的布局图,杰洛君知道,这个地方最终一定是一个很大的水平布局。

以水平布局去看的话,这个界面分为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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个QT实现的Mjpeg-streamer客户端(简易版)的代码示例: ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkReply> #include <QtNetwork/QNetworkRequest> #include <QPixmap> #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 这里填写Mjpeg-streamer服务器的地址和端口号 m_url = "http://192.168.1.100:8080/?action=stream"; m_networkManager = new QNetworkAccessManager(this); // 启动定时器,定时获取图片数据 m_timer = new QTimer(this); connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimer())); m_timer->start(100); } MainWindow::~MainWindow() { delete ui; } void MainWindow::onTimer() { QNetworkReply *reply = m_networkManager->get(QNetworkRequest(QUrl(m_url))); connect(reply, SIGNAL(finished()), this, SLOT(onReplyFinished())); } void MainWindow::onReplyFinished() { QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); if(reply->error() == QNetworkReply::NoError) { QPixmap pixmap; pixmap.loadFromData(reply->readAll()); ui->label->setPixmap(pixmap); } else { qDebug() << "Error:" << reply->errorString(); } reply->deleteLater(); } ``` 这个代码简单地实现一个定时器,每隔一定时间就从Mjpeg-streamer服务器获取一张图片,并将其显示在UI界面上。需要注意的是,这个代码并没有对获取到的图片进行解码,因此只支持MJPEG格式的图片。如果需要支持其他格式,需要使用相应的解码库进行解码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值