1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > qt小项目 代码实现简易的QQ聊天 对话框的界面实现

qt小项目 代码实现简易的QQ聊天 对话框的界面实现

时间:2021-04-25 20:03:50

相关推荐

qt小项目 代码实现简易的QQ聊天 对话框的界面实现

效果显示

代码实现

myWindow.h

#ifndef WINDOW_H#define WINDOW_H#include <QWidget>#include <QVBoxLayout>#include <QHBoxLayout>#include <QLabel>#include <QToolButton>#include <QTextBrowser>#include <QTextEdit>#include <QPushButton>#include <QSpacerItem>#include <QComboBox>#include <QSpinBox>#include <QFontComboBox>#include <QTableWidget>class window: public QWidget{Q_OBJECTpublic:window(QWidget *parent = nullptr);~window();private:QTextBrowser * msgBrowser;QTextEdit * msgTextEdit;QFontComboBox *fontBox;QSpinBox *fontSizeBox;QPushButton *underlineBn;QPushButton *boldBn;QPushButton *saveBn;QPushButton *clearBn;QPushButton *colorBn;QPushButton *tiltBn;QPushButton *sendBn;QPushButton *exitBn;QLabel *onlineNum;QSpacerItem *spacer[2];QTableWidget *tableWidget;QHBoxLayout *hLayout[3];QVBoxLayout *vLayout;void paintEvent(QPaintEvent *event);};#endif // WINDOW_H

myWindow.cpp

#include "myWindow.h"#include <QFrame>#include <QPainter>#include <QPaintEvent>#include <QSpacerItem>window::window(QWidget *parent): QWidget(parent){this->setGeometry(500, 500, 730, 450);msgBrowser = new QTextBrowser();msgTextEdit = new QTextEdit();fontBox = new QFontComboBox();fontSizeBox = new QSpinBox();underlineBn = new QPushButton();boldBn = new QPushButton();saveBn = new QPushButton();clearBn = new QPushButton();colorBn = new QPushButton();tiltBn = new QPushButton();sendBn = new QPushButton();exitBn = new QPushButton();onlineNum = new QLabel();tableWidget = new QTableWidget(0, 1);msgTextEdit->setMaximumHeight(100);boldBn->setMaximumSize(33, 32);boldBn->setIconSize(QSize(26, 26));boldBn->setCheckable(true);boldBn->setIcon(QPixmap(":/img/bold.png"));underlineBn->setMaximumSize(33, 32);underlineBn->setIconSize(QSize(26, 26));underlineBn->setCheckable(true);underlineBn->setIcon(QPixmap(":/img/underline.png"));saveBn->setMaximumSize(33, 32);saveBn->setIconSize(QSize(26, 26));saveBn->setCheckable(true);saveBn->setIcon(QPixmap(":/img/save.png"));clearBn->setMaximumSize(33, 32);clearBn->setIconSize(QSize(26, 26));clearBn->setCheckable(true);clearBn->setIcon(QPixmap(":/img/clear.png"));colorBn->setMaximumSize(33, 32);colorBn->setIconSize(QSize(26, 26));colorBn->setCheckable(true);colorBn->setIcon(QPixmap(":/img/color.png"));tiltBn->setMaximumSize(33, 32);tiltBn->setIconSize(QSize(26, 26));tiltBn->setCheckable(true);tiltBn->setIcon(QPixmap(":/img/tilt.png"));sendBn->setText("发送");exitBn->setText("退出");onlineNum->setText("当前在线人数:0人");tableWidget->setMinimumWidth(180);// tableWidQStringList header;header << "用户名";tableWidget->setHorizontalHeaderLabels(header);tableWidget->setShowGrid(false);tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选中行为为一行tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//单行选中tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);tableWidget->setFocusPolicy(Qt::NoFocus);//不设置鼠标焦点,不会出现某一行高亮的同时,鼠标所在单元格别选中高亮的情况hLayout[0] = new QHBoxLayout();hLayout[0]->addWidget(fontBox);hLayout[0]->addWidget(fontSizeBox);hLayout[0]->addWidget(underlineBn);hLayout[0]->addWidget(boldBn);hLayout[0]->addWidget(tiltBn);hLayout[0]->addWidget(colorBn);hLayout[0]->addWidget(saveBn);hLayout[0]->addWidget(clearBn);hLayout[1] = new QHBoxLayout();hLayout[1]->addWidget(sendBn);// hLayout[1]->addSpacerItem(space1);hLayout[1]->addWidget(onlineNum);// hLayout[1]->addSpacerItem(space2);hLayout[1]->addWidget(exitBn);vLayout = new QVBoxLayout();vLayout->addWidget(msgBrowser);vLayout->addLayout(hLayout[0]);vLayout->addWidget(msgTextEdit);vLayout->addLayout(hLayout[1]);hLayout[2] = new QHBoxLayout();hLayout[2]->addLayout(vLayout);hLayout[2]->addWidget(tableWidget);this->setLayout(hLayout[2]);}window::~window(){}void window::paintEvent(QPaintEvent *event){Q_UNUSED(event)QPainter painter(this);painter.setPen(QColor(Qt::black));painter.drawRect(10, this->height()-204, this->width()-212 ,38);painter.drawRect(10, 10, this->width()-212, this->height()-65);}

总结

相比ui资源实现页面布局,代码的实现还是相对繁琐而且冗长的。(目前来看是如此)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。