当前位置: 首页 > news >正文

做本地网站赚钱如何做地图的ppt模板下载网站

做本地网站赚钱,如何做地图的ppt模板下载网站,网站建设策划书编制,好的学习网站打广告Qt开发 系列文章 - user-defined-titlebars#xff08;十#xff09; 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 Qt自带…Qt开发 系列文章 - user-defined-titlebars十 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 Qt自带的窗口标题栏通常遵循操作系统的默认样式和布局以确保在不同平台上都能提供一致且符合用户期望的用户体验因此Qt自带的窗口标题栏无法自定义。但我们在Qt设计软件时经常需要改变窗口标题栏的样式以满足不同场合用户需求。本文紧接着上一篇博文Qt之修改窗口标题、图标以及自定义标题栏九-CSDN博客的基础上在介绍几种实现自定义标题栏的方法并提供简单示例。 一、方式一 上一篇博文Qt之修改窗口标题、图标以及自定义标题栏九实现该方式是通过直接手鲁编写标题栏UI代码下面提供的方式是在可视化界面UI上来设计标题栏简洁方便直观然后绑定/链接到主窗口界面上。 1.效果演示 2.创建标题栏类 跟上一个有区别的是在原有的项目上添加新的类文件选择带ui设计类的模版选择如下。 然后定义类和ui的名称为MyTitleBarMyTitleBar类的头文件代码如下示例 /** 只提供与上一篇不一样的代码地方 **/ QT_BEGIN_NAMESPACE namespace Ui { class MyTitleBar; } QT_END_NAMESPACEclass MyTitleBar : public QWidget { private slots:// 按钮触发的槽;void on_m_pButtonClose_clicked();void on_m_pButtonMax_clicked();void on_m_pButtonRestore_clicked();void on_m_pButtonMin_clicked(); private:Ui::MyTitleBar *ui; }; 3.可视化UI设计 上面我们定义标题栏类的头文件下面来在可视化界面UI上来设计标题栏双击打开.ui文件在图像化设计界面设计如下标题栏。 上面设计完后Qt会自动生成相应的UI代码和头文件相关类为Ui_MyTitleBar。 4.定义相关函数 设计好MyTitleBar的UI文件后下面来说明相关功能函数。 #include ui_mytitlebar.h #include mytitlebar.hMyTitleBar::MyTitleBar(QWidget *parent): QWidget(parent), ui(new Ui::MyTitleBar) {// UI初始化ui-setupUi(this);// 初始化控件initControl();// 初始化标题栏色彩setBackgroundColor(m_colorR, m_colorG, m_colorB, m_isTransparent);// 加载本地样式 .css文件//loadStyleSheet(MyTitle);// 初始化标题栏色彩setBackgroundColor(230,232,250,0);setStyleSheet(QToolButton#m_pButtonMenu,QPushButton#m_pButtonMin,QPushButton#m_pButtonMax,QPushButton#m_pButtonClose{\border-radius:3px;\color:#324C6C;\padding:3px;\margin:0px;\background:none;\border-style:none;\});setStyleSheet(QToolButton#m_pButtonMenu:hover,QPushButton#m_pButtonMin:hover,QPushButton#m_pButtonMax:hover{\color:#FFFFFF;\margin:1px 1px 2px 1px;\background-color:rgba(51,127,209,230);\}); } MyTitleBar::~MyTitleBar() { } void MyTitleBar::initControl() {m_colorR0;m_colorG153;m_colorB153;m_isPressedfalse;m_buttonTypeMIN_MAX_BUTTON;m_windowBorderWidth0;m_isTransparentfalse;setFixedHeight(30);setWindowFlags(Qt::FramelessWindowHint);// 添加换肤菜单QStringList name;name 银色 蓝色 浅蓝色 深蓝色;foreach (QString str, name) {QAction *action new QAction(str, this);ui-m_pButtonMenu-addAction(action);connect(action, SIGNAL(triggered(bool)), this, SLOT(onButtonchangeStyle()));} } // 以下为按钮操作响应的槽 void MyTitleBar::onButtonchangeStyle() {QAction *act (QAction *)sender();QString name act-text();//QString qssFile qss/blue.css;if (name 银色) {//qssFile qss/silvery.css;setBackgroundColor(230,232,250,0);}else if (name 蓝色){//qssFile qss/blue.css;setBackgroundColor(50,76,108,0);}else if (name 浅蓝色){//qssFile qss/lightblue.css;setBackgroundColor(56,100,135,0);}else if (name 深蓝色){//qssFile qss/darkblue.css;setBackgroundColor(122,175,227,0);}//loadStyleSheet(qssFile);//emit signalchangeStyle(qssFile); } void MyTitleBar::on_m_pButtonClose_clicked() {emit signalButtonCloseClicked(); } void MyTitleBar::on_m_pButtonMax_clicked() {ui-m_pButtonMax-setVisible(false);ui-m_pButtonRestore-setVisible(true);emit signalButtonMaxClicked(); } void MyTitleBar::on_m_pButtonRestore_clicked() {ui-m_pButtonRestore-setVisible(false);ui-m_pButtonMax-setVisible(true);emit signalButtonRestoreClicked(); } void MyTitleBar::on_m_pButtonMin_clicked() {emit signalButtonMinClicked(); } 5.使用标题栏类 在用户的构造函数上面添加对标题栏类的使用跟上一篇博文一样。 二、方式二 方式一实现自定义标题栏时定义一个标题栏类在生成标题栏时会覆盖原有的MenuBar和ToolBar方式二改进后修改标题栏不覆盖效果如下。 1.效果演示 2.创建标题栏类 跟上一篇博文一样在原有的项目上添加C新的类文件选择如下。 然后定义标题栏类代码部分如下示例 #include QDialog #include QMutexclass QLabel; class QPushButton; class QToolButton; class QVBoxLayout; class QHBoxLayout; class QFrame; class QSpacerItem; class QLineEdit; class QComboBox; class QAbstractButton; class QUIWidget : public QDialog#endif {Q_OBJECTQ_ENUMS(Style)Q_PROPERTY(QString title READ getTitle WRITE setTitle)Q_PROPERTY(Qt::Alignment alignment READ getAlignment WRITE setAlignment) public:explicit QUIWidget(QWidget *parent 0);~QUIWidget(); public Q_SLOTS://设置主窗体void setMainWidget(QWidget *mainWidget);//设置部件图标void setIcon(QUIWidget::Widget widget, QChar str, quint32 size 9);//设置部件图片void setPixmap(QUIWidget::Widget widget, const QString file, const QSize size QSize(16, 16));//设置部件是否可见void setVisible(QUIWidget::Widget widget, bool visible true);//设置只有关闭按钮void setOnlyCloseBtn();//设置标题栏高度void setTitleHeight(int height);//设置按钮统一宽度void setBtnWidth(int width);//设置标题及文本样式void setTitle(const QString title);void setAlignment(Qt::Alignment alignment); }; 3.定义相关函数 1.初始化函数 在标题栏类构造函数上初始化如下设置代码如下。 QUIWidget::QUIWidget(QWidget *parent) : QDialog(parent) {//定义标题栏字体文本编码this-setTranslator(:/qm/qt_zh_CN.qm);this-setCode();this-initControl();this-initForm();//设置标题栏标题 #ifdef csdsetTitle(**软件); #elsesetTitle(csd演示版); #endif//设置标题文本居中setAlignment(Qt::AlignCenter);//设置窗体可拖动大小setSizeGripEnabled(true);//设置换肤下拉菜单可见setVisible(QUIWidget::BtnMenu, true);//设置标题栏高度setTitleHeight(30);//设置按钮宽度setBtnWidth(30);//设置软件左上角图标--没有图标时显示图形字体setPixmap(QUIWidget::Lab_Ico, ico/butterfly.ico, QSize(30,30));//默认样式风格bluesetStyle(:/qss/blue.css);QFont font;font.setPointSize(12);this-setFont(font); } void QUIWidget::initControl() {this-setObjectName(QString::fromUtf8(QUIWidget));this-resize(900, 750);verticalLayout1 new QVBoxLayout(this);verticalLayout1-setSpacing(0);verticalLayout1-setContentsMargins(11, 11, 11, 11);verticalLayout1-setObjectName(QString::fromUtf8(verticalLayout1));verticalLayout1-setContentsMargins(1, 1, 1, 1);widgetMain new QWidget(this);widgetMain-setObjectName(QString::fromUtf8(widgetMain));widgetMain-setStyleSheet(QString::fromUtf8());verticalLayout2 new QVBoxLayout(widgetMain);verticalLayout2-setSpacing(0);verticalLayout2-setContentsMargins(11, 11, 11, 11);verticalLayout2-setObjectName(QString::fromUtf8(verticalLayout2));verticalLayout2-setContentsMargins(0, 0, 0, 0);widget_title new QWidget(widgetMain);widget_title-setObjectName(QString::fromUtf8(widget_title));QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);sizePolicy.setHorizontalStretch(0);sizePolicy.setVerticalStretch(0);sizePolicy.setHeightForWidth(widget_title-sizePolicy().hasHeightForWidth());widget_title-setSizePolicy(sizePolicy);widget_title-setMinimumSize(QSize(0, 30));horizontalLayout4 new QHBoxLayout(widget_title);horizontalLayout4-setSpacing(0);horizontalLayout4-setContentsMargins(11, 11, 11, 11);horizontalLayout4-setObjectName(QString::fromUtf8(horizontalLayout4));horizontalLayout4-setContentsMargins(0, 0, 0, 0);lab_Ico new QLabel(widget_title);lab_Ico-setObjectName(QString::fromUtf8(lab_Ico));QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Preferred);sizePolicy1.setHorizontalStretch(0);sizePolicy1.setVerticalStretch(0);sizePolicy1.setHeightForWidth(lab_Ico-sizePolicy().hasHeightForWidth());lab_Ico-setSizePolicy(sizePolicy1);lab_Ico-setMinimumSize(QSize(30, 0));lab_Ico-setAlignment(Qt::AlignCenter);horizontalLayout4-addWidget(lab_Ico);lab_Title new QLabel(widget_title);lab_Title-setObjectName(QString::fromUtf8(lab_Title));QSizePolicy sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Preferred);sizePolicy2.setHorizontalStretch(0);sizePolicy2.setVerticalStretch(0);sizePolicy2.setHeightForWidth(lab_Title-sizePolicy().hasHeightForWidth());lab_Title-setSizePolicy(sizePolicy2);lab_Title-setAlignment(Qt::AlignLeading | Qt::AlignLeft | Qt::AlignVCenter);horizontalLayout4-addWidget(lab_Title);widget_menu new QWidget(widget_title);widget_menu-setObjectName(QString::fromUtf8(widget_menu));sizePolicy1.setHeightForWidth(widget_menu-sizePolicy().hasHeightForWidth());widget_menu-setSizePolicy(sizePolicy1);horizontalLayout new QHBoxLayout(widget_menu);horizontalLayout-setSpacing(0);horizontalLayout-setContentsMargins(11, 11, 11, 11);horizontalLayout-setObjectName(QString::fromUtf8(horizontalLayout));horizontalLayout-setContentsMargins(0, 0, 0, 0);btnMenu new QToolButton(widget_menu);btnMenu-setObjectName(QString::fromUtf8(btnMenu));QSizePolicy sizePolicy3(QSizePolicy::Fixed, QSizePolicy::Expanding);sizePolicy3.setHorizontalStretch(0);sizePolicy3.setVerticalStretch(0);sizePolicy3.setHeightForWidth(btnMenu-sizePolicy().hasHeightForWidth());btnMenu-setSizePolicy(sizePolicy3);btnMenu-setMinimumSize(QSize(30, 0));btnMenu-setMaximumSize(QSize(30, 16777215));btnMenu-setFocusPolicy(Qt::NoFocus);btnMenu-setPopupMode(QToolButton::InstantPopup);horizontalLayout-addWidget(btnMenu);btnMenu_Min new QPushButton(widget_menu);btnMenu_Min-setObjectName(QString::fromUtf8(btnMenu_Min));QSizePolicy sizePolicy4(QSizePolicy::Minimum, QSizePolicy::Expanding);sizePolicy4.setHorizontalStretch(0);sizePolicy4.setVerticalStretch(0);sizePolicy4.setHeightForWidth(btnMenu_Min-sizePolicy().hasHeightForWidth());btnMenu_Min-setSizePolicy(sizePolicy4);btnMenu_Min-setMinimumSize(QSize(30, 0));btnMenu_Min-setMaximumSize(QSize(30, 16777215));btnMenu_Min-setCursor(QCursor(Qt::ArrowCursor));btnMenu_Min-setFocusPolicy(Qt::NoFocus);horizontalLayout-addWidget(btnMenu_Min);btnMenu_Max new QPushButton(widget_menu);btnMenu_Max-setObjectName(QString::fromUtf8(btnMenu_Max));sizePolicy3.setHeightForWidth(btnMenu_Max-sizePolicy().hasHeightForWidth());btnMenu_Max-setSizePolicy(sizePolicy3);btnMenu_Max-setMinimumSize(QSize(30, 0));btnMenu_Max-setMaximumSize(QSize(30, 16777215));btnMenu_Max-setCursor(QCursor(Qt::ArrowCursor));btnMenu_Max-setFocusPolicy(Qt::NoFocus);horizontalLayout-addWidget(btnMenu_Max);btnMenu_Close new QPushButton(widget_menu);btnMenu_Close-setObjectName(QString::fromUtf8(btnMenu_Close));sizePolicy3.setHeightForWidth(btnMenu_Close-sizePolicy().hasHeightForWidth());btnMenu_Close-setSizePolicy(sizePolicy3);btnMenu_Close-setMinimumSize(QSize(30, 0));btnMenu_Close-setMaximumSize(QSize(30, 16777215));btnMenu_Close-setCursor(QCursor(Qt::ArrowCursor));btnMenu_Close-setFocusPolicy(Qt::NoFocus);horizontalLayout-addWidget(btnMenu_Close);horizontalLayout4-addWidget(widget_menu);verticalLayout2-addWidget(widget_title);widget new QWidget(widgetMain);widget-setObjectName(QString::fromUtf8(widget));verticalLayout3 new QVBoxLayout(widget);verticalLayout3-setSpacing(0);verticalLayout3-setContentsMargins(11, 11, 11, 11);verticalLayout3-setObjectName(QString::fromUtf8(verticalLayout3));verticalLayout3-setContentsMargins(0, 0, 0, 0);verticalLayout2-addWidget(widget);verticalLayout1-addWidget(widgetMain);connect(this-btnMenu_Min, SIGNAL(clicked(bool)), this, SLOT(on_btnMenu_Min_clicked()));connect(this-btnMenu_Max, SIGNAL(clicked(bool)), this, SLOT(on_btnMenu_Max_clicked()));connect(this-btnMenu_Close, SIGNAL(clicked(bool)), this, SLOT(on_btnMenu_Close_clicked())); }void QUIWidget::initForm() {//设置图形字体setIcon(QUIWidget::Lab_Ico, QChar(0xf099), 11); //设置左上角图标-图形字体setIcon(QUIWidget::BtnMenu, 0xf0d7);setIcon(QUIWidget::BtnMenu_Min, 0xf068);setIcon(QUIWidget::BtnMenu_Max, 0xf067);setIcon(QUIWidget::BtnMenu_Close, 0xf00d);//设置标题及对齐方式setTitle(QUI Demo);setAlignment(Qt::AlignLeft | Qt::AlignVCenter);setVisible(QUIWidget::BtnMenu, false);mainWidget 0;max false;location this-geometry();this-setProperty(form, true);this-setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint);//第一个参数是设置无边框。第二个参数是允许任务栏按钮右键菜单第三个参数是允许最小化最大化与还原this-setWindowFlags(Qt::FramelessWindowHint);//任务栏单击图标后最小化后图标会消失无法解决因此不让最小化//绑定事件过滤器监听鼠标移动this-installEventFilter(this);this-widget_title-installEventFilter(this);//添加换肤菜单QStringList name;name 银色 蓝色 浅蓝色 深蓝色 灰色 浅灰色 深灰色 黑色 浅黑色 深黑色 PS黑色 黑色扁平 白色扁平 浅紫色 橙色;foreach (QString str, name) {QAction *action new QAction(str, this);this-btnMenu-addAction(action);connect(action, SIGNAL(triggered(bool)), this, SLOT(changeStyle()));} } 2.功能函数 具体设置部件图标、设置部件图片、设置部件是否可见、设置标题栏高度、设置按钮统一宽度、设置标题及文本样式等等设置代码如下。 void QUIWidget::setIcon(QUIWidget::Widget widget, QChar str, quint32 size) {if (widget QUIWidget::Lab_Ico) {IconHelper::Instance()-setIcon(this-lab_Ico, str, size);} else if (widget QUIWidget::BtnMenu) {IconHelper::Instance()-setIcon(this-btnMenu, str, size);} else if (widget QUIWidget::BtnMenu_Min) {IconHelper::Instance()-setIcon(this-btnMenu_Min, str, size);} else if (widget QUIWidget::BtnMenu_Max) {IconHelper::Instance()-setIcon(this-btnMenu_Max, str, size);} else if (widget QUIWidget::BtnMenu_Close) {IconHelper::Instance()-setIcon(this-btnMenu_Close, str, size);} }void QUIWidget::setPixmap(QUIWidget::Widget widget, const QString file, const QSize size) {QPixmap pix QPixmap(file);//按照宽高比自动缩放pix pix.scaled(size, Qt::KeepAspectRatio);if (widget QUIWidget::Lab_Ico) {this-lab_Ico-setPixmap(pix);} else if (widget QUIWidget::BtnMenu) {this-btnMenu-setIcon(QIcon(file));} else if (widget QUIWidget::BtnMenu_Min) {this-btnMenu_Min-setIcon(QIcon(file));} else if (widget QUIWidget::BtnMenu_Max) {this-btnMenu_Max-setIcon(QIcon(file));} else if (widget QUIWidget::BtnMenu_Close) {this-btnMenu_Close-setIcon(QIcon(file));} }void QUIWidget::setVisible(QUIWidget::Widget widget, bool visible) {if (widget QUIWidget::Lab_Ico) {this-lab_Ico-setVisible(visible);} else if (widget QUIWidget::BtnMenu) {this-btnMenu-setVisible(visible);} else if (widget QUIWidget::BtnMenu_Min) {this-btnMenu_Min-setVisible(visible);} else if (widget QUIWidget::BtnMenu_Max) {this-btnMenu_Max-setVisible(visible);} else if (widget QUIWidget::BtnMenu_Close) {this-btnMenu_Close-setVisible(visible);} }void QUIWidget::setOnlyCloseBtn() {this-btnMenu-setVisible(false);this-btnMenu_Min-setVisible(false);this-btnMenu_Max-setVisible(false); }void QUIWidget::setTitleHeight(int height) {this-widget_title-setFixedHeight(height); }void QUIWidget::setBtnWidth(int width) {this-lab_Ico-setFixedWidth(width);this-btnMenu-setFixedWidth(width);this-btnMenu_Min-setFixedWidth(width);this-btnMenu_Max-setFixedWidth(width);this-btnMenu_Close-setFixedWidth(width); }void QUIWidget::setTitle(const QString title) {if (this-title ! title) {this-title title;this-lab_Title-setText(title);this-setWindowTitle(this-lab_Title-text());} }void QUIWidget::setAlignment(Qt::Alignment alignment) {if (this-alignment ! alignment) {this-alignment alignment;this-lab_Title-setAlignment(alignment);} }void QUIWidget::on_btnMenu_Min_clicked() {this-showMinimized(); }void QUIWidget::on_btnMenu_Max_clicked() {if (max) {this-setGeometry(location);} else {location this-geometry();this-setGeometry(qApp-desktop()-availableGeometry());}max !max; }void QUIWidget::on_btnMenu_Close_clicked() {close(); } 3.窗口关联 打开主函数文件在Main函数上将主窗口用户链接到标题栏窗口上关联起来代码如下。 int main(int argc, char *argv[]) {QApplication a(argc, argv);//定义用户窗口MainWindow *w new MainWindow;//定义标题栏QUIWidget qui;//将主窗体链接/关联到标题栏窗口上qui.setMainWidget(w);qui.show();return a.exec(); } void QUIWidget::setMainWidget(QWidget *mainWidget) {//一个QUI窗体对象只能设置一个主窗体if (this-mainWidget 0) {//将子窗体添加到布局this-widget-layout()-addWidget(mainWidget);//自动设置大小resize(mainWidget-width(), mainWidget-height() this-widget_title-height());this-mainWidget mainWidget;this-mainWidget-installEventFilter(this);} } 4.使用标题栏类 因为在Main函数上已经将主窗体链接/关联到标题栏窗口上因此在用户层无需关注/设置标题栏相关参数。这里和方式一不一样的是方式是将标题栏类作为主窗口的私有变量使用而方式二只是将两个窗口界面关联起来而已。 至此方式二讲解完毕该种方式有个缺点是需要手鲁UI设计代码。更快捷的是通过可视化界面UI来设计标题栏然后绑定/链接到主窗口界面上跟方式一一样。 总结 博文中相应的工程代码Qt-Case.zip 利用Qt开发软件进行编的例程为博文提供案例-CSDN文库。
http://www.pierceye.com/news/216914/

相关文章:

  • 建个门户网站新手学编程用什么软件
  • 旅游网站建设规范wordpress用户注册协议
  • 淘宝客网站女装模板下载wordpress5 没有块引用
  • 35网站建设博客移动端网站模板
  • 卡盟网站建设公司品牌策划ppt
  • 自己如何做网站教程广州建网站有哪些
  • 网站建设 市场规模加强财政门户网站建设工作
  • wordpress 搭建多站点电子商务网站
  • 免费制作网页的网站万网租空间 网站
  • 上海 网站 备案ios开发网站app
  • 网站建设,h5,小程序众安保险
  • 大连网站建设资讯网站seo如何优化
  • 手表网站建设策划西地那非片怎么服用最佳
  • 常德网站设计英文版网站怎么做
  • 权威网站建设网站的工具
  • php手机网站模板厦门网站设计建设
  • 焦作集团网站建设做食品网站需要什么资质
  • 西北电力建设甘肃工程公司网站90设计电商模板
  • 内蒙古网站设计推广网站注册赚佣金
  • 医药类网站建设评价wordpress微信支付模板
  • 如何查看网站空间商手机服务器下载安装
  • 北京响应式网站建设报价英文版网站案例
  • 做爰全过程免费的视频99网站做h5单页的网站
  • 怎么才能百度做网站海外直播
  • 响应式企业网站开发所用的平台酷炫网站首页
  • 西安网站建设全包大发 wordpress
  • html5 网站开发定制做公司网站好处
  • 建站网站教程网站建设工程师职责说明书
  • 新云网站模版宠物网站开发
  • 网站建设面授班网站备案回访电话号码