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

简易购物网站前端模板利用h5网站做app

简易购物网站前端模板,利用h5网站做app,大一计算机网页制作步骤,重庆电力建设公司网站qt窗体布局 窗体渲染过程 qt中窗体渲染逻辑顺序为 本窗体-子窗体/控件 递归#xff0c;也就是说先渲染父窗体再渲染子窗体。其中子窗体按加入时的先后顺序进行渲染。通过下方的函数调用堆栈可以看出窗体都是在widget组件源码的widgetprivate::drawwidget中进行渲染的子窗体/控件 递归也就是说先渲染父窗体再渲染子窗体。其中子窗体按加入时的先后顺序进行渲染。通过下方的函数调用堆栈可以看出窗体都是在widget组件源码的widgetprivate::drawwidget中进行渲染的qt内部完成对当前窗体的渲染后再drawWidget最后调用paintSiblingsRecursive这个递归调用函数对所有子窗体进行逐个渲染paintEvent也是在这个paintSiblingsRecursive之前就完成了。 qt窗体的一次渲染过程分两部分工作第一部分工作是qt内部对窗体进行渲染工作这个渲染过程对编程人员来说是不可见不可直接干预的只能通过设置style stylesheet palette进行事先设置第二部分是paintEvent中编程人员可以在这个里面通过Qpainter进行渲染发挥用QPainter渲染出来的结果去覆盖qt内部渲染出来的结果。其中window、widget、form都是在paintEvent之外渲染的而button、label等等控件则是在paintEvent之中进行隐藏在QPushButton::paintEvent中。  qt的组件被触发渲染/绘制时QPainter就需要重新进行渲染/绘制否则QPainter的内容就会被覆盖所以如果QPainter需要对窗体进行渲染操作需要在目标窗体中的paintEvent中去实现QPainter的操作步骤。 demo中窗体结构 MainWindow     centralWidget         pushbutton         vboxlayout  centralWidget-setlayout(vboxlayout)             mywidget                 vboxlayout   mywideget-setlayout(vboxlayout)                     mybutton         tbutton1         tbutton2 效果 mybutton.cppMyButton::MyButton(QWidget* parent):QPushButton(parent) {setAttribute(Qt::WA_StyledBackground);setStyleSheet(background-color:rgba(255,255,0,100)); //设置mybutton背景色为黄色半透明半透明叠加好像无效 }--------------------- mywidget.cppMyWidget::MyWidget(QWidget *parent): QWidget{parent} {QVBoxLayout *layout new QVBoxLayout(this);setLayout(layout);m_button new MyButton(this);m_button-setText(button_myWidget);layout-addWidget(m_button);layout-setAlignment(m_button,Qt::AlignCenter);//resize(400, 400);//layout会自动设置窗体的size。setAttribute(Qt::WA_StyledBackground);setStyleSheet(background-color: rgba(255,0,0,100)); //设置mywidget窗体背景色位半透明 }-------------- mainwindow.cppMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-setupUi(this);QPushButton *button1 new QPushButton(this-centralWidget());//这里就表示已经将pushbutton加入到centralwidget中了button1-setGeometry(QRect(270, 20, 200, 100));button1-setText(tbutton1);layout new QVBoxLayout(this-centralWidget());m_widget new MyWidget(this-centralWidget());layout-addWidget(m_widget);this-centralWidget()-setLayout(layout);QPushButton *button new QPushButton(this-centralWidget());button-setGeometry(QRect(500, 20, 200, 100));button-setText(tbutton2); } qt中widget、window、form的渲染过程对开发者来说是隐藏的。但是qt为开发者提供了QPainter进行画面渲染绘制工作的类qpainter就相当于opengl中的render可以自由操控渲染过程以及渲染目标是比较方便灵活的。 它的渲染过程由qpainter::begin(paintdevice)开始到qpainter::end()结束渲染过程是独立的不受qt内部渲染窗体的过程的影响。其中当painter构造函数中含有paintdevice参数时在构造函数中就会调用begin()不需要再显式调用begin()painter对象在析构的时候会自动调用end()可以不需要显式调用end()。 qt的窗体渲染与QPainter渲染冲突问题 qt内部对窗体渲染也是直接渲染到QWidget的QPaintDevice的内存上QPainter也是放在QWidget的QPaintDevice内存上。这样就会导致渲染结果的冲突。QPainter对窗体的渲染需要放在paintEvent中因为paintEvent是在qt内部对widget渲染完了后再执行的这样用户用QPainter自定义的渲染结果才能在qt内部渲染结果上叠加。而不是被qt内部渲染结果冲刷掉 QPainter渲染无效原因 需要注意的是QPainter应该在渲染目标对象的PaintEvent中进行工作否则渲染的结果会被冲刷掉。比如 在Mainwindow中的paintEvent中用QPainter对mainWindow的子窗体centralwidget进行渲染就不会有任何效果因为centralwidget这个子窗体的渲染是在Mainwindow的paintevent完成之后才进行的。可以将覆盖在centralwideget上的mywidget作为渲染目标在mywidget中的paintEvent中完成QPainter的工作。qt 快捷功能 快速生成代码 父类虚函数重写 查看父类及父类中的虚函数 QPainter使用 一定要设置绘制对象绘制对象必须继承自QPaintDevice。一般用在paintEvent()函数中 ​​​​​​​void MyWidget::paintEvent(QPaintEvent *event) {QPainter painter(this);   //传入this表示要在mywidget上进行绘制painter.drawImage(this-rect(),QImage(G:/1/1.png)); } QPainter painter();//painter-begin(0); // impossible - paint device cannot be 0 when it begin painting//QPixmap image(0, 0);//painter-begin(image); // impossible - image.isNull() true;painter-begin(myWidget);//painter-begin(myWidget); // impossible - only one painter at a timepainter.drawEllipse(QRectF(0,0,100,100));painter.end(); 下面四个类都继承自QPaintDevice都可以让QPainter进行绘制 QPixmap专门为图像在屏幕上的显示做了优化QBitmap是QPixmap的一个子类它的色深限定为1可以使用 QPixmap的isQBitmap()函数来确定这个QPixmap是不是一个QBitmap因为QBitmap色深小因此只占用很少的存储空间所以适合做光标文件和笔刷。QImage专门为图像的像素级访问做了优化QPicture则可以记录和重现QPainter的各条命令。 QPicture将QPainter的命令序列化到一个IO设备保存为一个平台独立的文件格式 对上面的demo做个小调整将mywidget中的setstylesheet设置到centralwidget中并在mywidget的paintevent中绘制一块不透明的区域 mybutton.cppMyButton::MyButton(QWidget* parent):QPushButton(parent) {setAttribute(Qt::WA_StyledBackground);setStyleSheet(background-color:rgba(0,0,255,100)); //设置mybutton背景色为黄色半透明半透明叠加好像无效 }--------------------- mywidget.cppMyWidget::MyWidget(QWidget *parent): QWidget{parent} {QVBoxLayout *layout new QVBoxLayout(this);setLayout(layout);m_button new MyButton(this);m_button-setText(button_myWidget);layout-addWidget(m_button);layout-setAlignment(m_button,Qt::AlignCenter);//resize(400, 400);//layout会自动设置窗体的size。//setAttribute(Qt::WA_StyledBackground);//setStyleSheet(background-color: rgba(77,66,105,100)); //设置mywidget窗体背景色位半透明 }void MyWidget::paintEvent(QPaintEvent *event) {QPainter painter(this);QRect ret this-rect();painter.fillRect(QRect(ret.x()50,ret.y()50,ret.width()*3/2,ret.height()/2), QColor(0,255,0,100));QWidget::paintEvent(event); }-------------- mainwindow.cppMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-setupUi(this);this-centralWidget()-setAttribute(Qt::WA_StyledBackground);this-centralWidget()-setStyleSheet(background-color: rgba(255,0,0,100)); QPushButton *button1 new QPushButton(this-centralWidget());//这里就表示已经将pushbutton加入到centralwidget中了button1-setGeometry(QRect(270, 20, 200, 100));button1-setText(tbutton1);layout new QVBoxLayout(this-centralWidget());m_widget new MyWidget(this-centralWidget());layout-addWidget(m_widget);this-centralWidget()-setLayout(layout);QPushButton *button new QPushButton(this-centralWidget());button-setGeometry(QRect(500, 20, 200, 100));button-setText(tbutton2); } 效果 centralwidget的子窗体及其递归都继承了他的stylesheetmybutton有额外设置的stylesheet所以没有继承而mywidget的Qpainter绘制的区域并不受mywidget继承的stylesheet而渲染出的结果所影响。 qt QLabel QPushButton 控件重写paintEvent后 控件消失-CSDN博客    qt 6.7 在布局中的按和文本框用resize设置大小无效_layer resize 设置无效-CSDN博客
文章转载自:
http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn
http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn
http://www.morning.mkhwx.cn.gov.cn.mkhwx.cn
http://www.morning.ttfh.cn.gov.cn.ttfh.cn
http://www.morning.tbwsl.cn.gov.cn.tbwsl.cn
http://www.morning.ggfdq.cn.gov.cn.ggfdq.cn
http://www.morning.ygpdm.cn.gov.cn.ygpdm.cn
http://www.morning.kflbf.cn.gov.cn.kflbf.cn
http://www.morning.zdxss.cn.gov.cn.zdxss.cn
http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn
http://www.morning.fglxh.cn.gov.cn.fglxh.cn
http://www.morning.rwzkp.cn.gov.cn.rwzkp.cn
http://www.morning.cklld.cn.gov.cn.cklld.cn
http://www.morning.jczjf.cn.gov.cn.jczjf.cn
http://www.morning.wrbf.cn.gov.cn.wrbf.cn
http://www.morning.lsfbb.cn.gov.cn.lsfbb.cn
http://www.morning.wdykx.cn.gov.cn.wdykx.cn
http://www.morning.myzfz.com.gov.cn.myzfz.com
http://www.morning.drnfc.cn.gov.cn.drnfc.cn
http://www.morning.ywtbk.cn.gov.cn.ywtbk.cn
http://www.morning.mtbth.cn.gov.cn.mtbth.cn
http://www.morning.kdhrf.cn.gov.cn.kdhrf.cn
http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn
http://www.morning.ccyjt.cn.gov.cn.ccyjt.cn
http://www.morning.rwjfs.cn.gov.cn.rwjfs.cn
http://www.morning.xqxrm.cn.gov.cn.xqxrm.cn
http://www.morning.srjbs.cn.gov.cn.srjbs.cn
http://www.morning.fjzlh.cn.gov.cn.fjzlh.cn
http://www.morning.youyouling.cn.gov.cn.youyouling.cn
http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn
http://www.morning.bbmx.cn.gov.cn.bbmx.cn
http://www.morning.bttph.cn.gov.cn.bttph.cn
http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn
http://www.morning.ljxps.cn.gov.cn.ljxps.cn
http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn
http://www.morning.rywr.cn.gov.cn.rywr.cn
http://www.morning.wkmrl.cn.gov.cn.wkmrl.cn
http://www.morning.rpms.cn.gov.cn.rpms.cn
http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn
http://www.morning.zxfr.cn.gov.cn.zxfr.cn
http://www.morning.gkfwp.cn.gov.cn.gkfwp.cn
http://www.morning.rckmz.cn.gov.cn.rckmz.cn
http://www.morning.wmglg.cn.gov.cn.wmglg.cn
http://www.morning.fqqcn.cn.gov.cn.fqqcn.cn
http://www.morning.kcypc.cn.gov.cn.kcypc.cn
http://www.morning.bsplf.cn.gov.cn.bsplf.cn
http://www.morning.nssjy.cn.gov.cn.nssjy.cn
http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn
http://www.morning.xiaobaixinyong.cn.gov.cn.xiaobaixinyong.cn
http://www.morning.gwmny.cn.gov.cn.gwmny.cn
http://www.morning.tqsmc.cn.gov.cn.tqsmc.cn
http://www.morning.pghgq.cn.gov.cn.pghgq.cn
http://www.morning.fwwkr.cn.gov.cn.fwwkr.cn
http://www.morning.tqklh.cn.gov.cn.tqklh.cn
http://www.morning.ftmly.cn.gov.cn.ftmly.cn
http://www.morning.qsctt.cn.gov.cn.qsctt.cn
http://www.morning.krkwh.cn.gov.cn.krkwh.cn
http://www.morning.ghjln.cn.gov.cn.ghjln.cn
http://www.morning.wsjnr.cn.gov.cn.wsjnr.cn
http://www.morning.ppdr.cn.gov.cn.ppdr.cn
http://www.morning.yxmcx.cn.gov.cn.yxmcx.cn
http://www.morning.mnqg.cn.gov.cn.mnqg.cn
http://www.morning.ygkb.cn.gov.cn.ygkb.cn
http://www.morning.ntcmrn.cn.gov.cn.ntcmrn.cn
http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn
http://www.morning.blxlf.cn.gov.cn.blxlf.cn
http://www.morning.qgkcs.cn.gov.cn.qgkcs.cn
http://www.morning.qbjrl.cn.gov.cn.qbjrl.cn
http://www.morning.fysdt.cn.gov.cn.fysdt.cn
http://www.morning.webife.com.gov.cn.webife.com
http://www.morning.wnqbf.cn.gov.cn.wnqbf.cn
http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn
http://www.morning.gctgc.cn.gov.cn.gctgc.cn
http://www.morning.crxdn.cn.gov.cn.crxdn.cn
http://www.morning.rqzyz.cn.gov.cn.rqzyz.cn
http://www.morning.djbhz.cn.gov.cn.djbhz.cn
http://www.morning.fxygn.cn.gov.cn.fxygn.cn
http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn
http://www.morning.lqpzb.cn.gov.cn.lqpzb.cn
http://www.morning.ygkb.cn.gov.cn.ygkb.cn
http://www.tj-hxxt.cn/news/257024.html

相关文章:

  • 怎么样建设网站赚钱wordpress怎么加插件下载
  • 做外贸网站好还是内贸网站好学产品设计专业后悔了
  • 网站加关键词吴中区做网站
  • xampp wordpress 建站教程做神马网站优化排
  • 高权重网站做员会来顶排名网站参考模板
  • 程序员做兼职的网站做网站被网警找
  • 泉州市网站制作企业网站建设未来发展前景
  • 网站的页面风格有哪些电子商务网站开发总结
  • 建立网站的信息集成过程扬州网站建设费用
  • 什么叫精品网站建设wordpress导航列表
  • 有哪些能做专门接做标书的网站怎么做网站外推
  • 分析网站的优势和不足做电影网站需多大的空间
  • 济南网站怎么做更换网站服务器
  • 网站项目上线流程南沙网站开发
  • 怎样做简单公司网站做海淘的网站做海淘的网站有哪些
  • 网站视频怎么做的好怎样建设美食网站
  • 双阳区住房和城乡建设局网站网站建设公司使用图片侵权使用者有无责任
  • 如何用服务器建设网站扫码点餐微信小程序怎么样开通
  • 网站服务器好一般通过后补贴什么时候到
  • 企业网站关站网站模板外包
  • 个性化网站定制价格企业应该如何进行网站推广
  • 黑龙江网站建设如何做基金公司网站
  • 一级域名和二级域名做两个网站庞各庄网站建设公司
  • 湛江网站建设费用我想找电商合作
  • 厦门网站建设2wordpress 主题 引入js
  • 花桥网站建设公司云服务器便宜
  • 网站建设人员职责网站建设 技术要求
  • 医疗网站建设精英郴州市旅游景点排行榜
  • 许昌市城市建设局网站黄石网站建设黄石
  • 南宁营销型网站设计求网站建设