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

河池市住房城乡建设网站wordpress加载长图

河池市住房城乡建设网站,wordpress加载长图,wordpress怎么改为中文字体,网站建设公司不挣钱的原因前言 QT展示列表信息的时候通常用到列表#xff08;比如用户信息、机构信息、设备信息等菜单#xff09;#xff0c;当需要对某列进行修改、删除操作时#xff0c;就需要加入按钮#xff08;QPushButton#xff09;#xff0c;当需要对多列进行右键菜单操作时#xff0…前言 QT展示列表信息的时候通常用到列表比如用户信息、机构信息、设备信息等菜单当需要对某列进行修改、删除操作时就需要加入按钮QPushButton当需要对多列进行右键菜单操作时就需要加入QCheckBox和右键菜单功能本篇即围绕QTableView、QCheckBox、QPushButton以及右键菜单进行讲解。 功能显示效果图 功能讲解 1、创建QTableView 1创建QTableView列表头 //两种方式创建列表头//1、在UI中之间添加//2、组装QStringList调用setHorizontalHeaderLabels方法加载进去列表头不算在数据模型Model里面QStringList tablelHeader;for(int i0;im_all_fieldsHeadname.size();i) {tablelHeader m_all_fieldsHeadname[i];}qDebug() __LINE__ __FUNCTION__tablelHeader;//tablelHeader 选择 序号编码名称品牌类型IP地址更新时间操作; 注意两种方式在数据展示上没有差别但存在一个坑 当使用代码行添加列表头tablelHeader时当设置勾选项QCheckBox的信号和槽函数来获取勾选项QCheckBox的位置时会偏差1行坑的位置是以下代码row在获取最后一行时返回的是-1返回值-1其实是无效的意思。 以下是片段代码//关联信号和槽QCheckBox *checkBox new QCheckBox();connect(checkBox,SIGNAL(stateChanged(int)),this,SLOT(onCheckBoxStateChanged(int)));//实现槽函数 void MainWindow::onCheckBoxStateChanged(int state){QCheckBox *checkBox qobject_castQCheckBox *(QObject::sender());if(checkBox){int row ui-tableWidget-indexAt(checkBox-mapTo(ui-tableWidget, QPoint(0, 0))).row(); } 我提交的源代码也是使用代码行添加列表头tablelHeader但用了另外一个方法来规避此问题规避方法是row取的是继承tableWidget获取到的row而不是通过checkBox-mapTo(ui-tableWidget, QPoint(0, 0))反向获取到的行位置本人未深入研究mapTo有用此方法解决此问题的兄弟可以把代码放在评论区所以不会出现偏差。 代码如下 void tab_basemsg::renderTable(const QStringList rowData){int row ui-tableWidget-rowCount();//当前tableWidget显示的行数//int rowCount ui-tableWidget-model()-rowCount();//tableWidget表格中实际的数据行数ui-tableWidget-insertRow(row);//在 QTableWidget 中插入新行for (int column 0; column rowData.size(); column) {QTableWidgetItem* item new QTableWidgetItem(rowData.at(column));item-setTextAlignment(Qt::AlignCenter);ui-tableWidget-setItem(row, column, item);if(column HEAD_BASEMSG_CKBOX){//创建复选框QCheckBoxQCheckBox* checkBox new QCheckBox();QWidget* widget new QWidget();QHBoxLayout* layout new QHBoxLayout(widget);layout-addWidget(checkBox);layout-setAlignment(Qt::AlignCenter);layout-setContentsMargins(0, 0, 0, 0);widget-setLayout(layout);if(m_controlstatusfalse) checkBox-setEnabled(false); // 设置复选框为不可选中状态else checkBox-setEnabled(true); // 设置复选框为可选中状态connect(checkBox,QCheckBox::stateChanged,this,[](int state){//获取当前行的IPQString ip ui-tableWidget-item(row, HEAD_BASEMSG_IP)-text();//可以继承到row//qDebug() __LINE__ state:state;qDebug() __LINE__ row:row ip:ip;m_iplist.append(ip);if (state Qt::Checked) {for(int i0;iHEAD_BASEMSG_NUM;i){QTableWidgetItem *item ui-tableWidget-item(row, i);//if(i0) {item-setText();}item-setBackground(QBrush(QColor(#308cc6)));item-setForeground(Qt::white);}// 改变操作项图标文件颜色变化QWidget *container ui-tableWidget-cellWidget(row, HEAD_BASEMSG_OPT);if (container) {QLayout *layout container-layout();if (layout) {if (layout) {QPushButton *editbtn qobject_castQPushButton *(layout-itemAt(0)-widget());QPushButton *deletebtn qobject_castQPushButton *(layout-itemAt(1)-widget());editbtn-setIcon(QIcon(:/index/img/edit_ch.png));deletebtn-setIcon(QIcon(:/index/img/delete_ch.png));}}}}else {for(int i0;iHEAD_BASEMSG_NUM;i){QTableWidgetItem *item ui-tableWidget-item(row, i);// 设置未选中行的背景颜色为默认颜色item-setBackground(QBrush(Qt::white));item-setForeground(Qt::black);}// 改变操作项图标文件颜色变化QWidget *container ui-tableWidget-cellWidget(row, HEAD_BASEMSG_OPT);if (container) {QLayout *layout container-layout();if (layout) {if (layout) {QPushButton *editbtn qobject_castQPushButton *(layout-itemAt(0)-widget());QPushButton *deletebtn qobject_castQPushButton *(layout-itemAt(1)-widget());editbtn-setIcon(QIcon(:/index/img/edit.png));deletebtn-setIcon(QIcon(:/index/img/delete.png));}}}}});ui-tableWidget-setCellWidget(row, column, widget);}if (column HEAD_BASEMSG_OPT) {//编辑按钮QPushButton* edit new QPushButton();edit-setIcon(QIcon(:/index/img/edit.png));edit-setIconSize(QSize(24, 24));edit-setStyleSheet(QPushButton { border: none; });edit-setCursor(Qt::PointingHandCursor);//删除按钮QPushButton* deleteButton new QPushButton();deleteButton-setIcon(QIcon(:/index/img/delete.png));deleteButton-setIconSize(QSize(24, 24));deleteButton-setStyleSheet(background-color:rgba(0,0,0,0);border:none;);deleteButton-setCursor(Qt::PointingHandCursor);//按钮信号监听connect(edit,SIGNAL(clicked()),this,SLOT(editBasemsg()));connect(deleteButton,SIGNAL(clicked()),this,SLOT(delBasemsg()));QWidget* widget new QWidget();QHBoxLayout* layout new QHBoxLayout(widget);layout-addWidget(edit);layout-addWidget(deleteButton);layout-setAlignment(Qt::AlignCenter);layout-setContentsMargins(0, 0, 0, 0);widget-setLayout(layout);ui-tableWidget-setCellWidget(row, column, widget);}} } 2QTableView中创建QCheckBox QCheckBox需要通过widget加载到QTableView中代码如下 //创建勾选项QCheckBox* checkBox new QCheckBox();//创建窗口视图QWidget* widget new QWidget();//创建布局QHBoxLayout* layout new QHBoxLayout(widget);//把勾选项加载到布局中layout-addWidget(checkBox);layout-setAlignment(Qt::AlignCenter);layout-setContentsMargins(0, 0, 0, 0);//把布局设置到窗口视图中widget-setLayout(layout);//把窗口视图中展示到tableWidget的指定位置ui-tableWidget-setCellWidget(row, column, widget); QCheckBox勾选项关联的信号和槽的代码参见【1创建QTableView列表头】分享的renderTable()函数源代码。 3QTableView中创建QPushButton QPushButton与QCheckBox一样也是需要widget加载到QTableView不过可以设置QPushButton的尺寸、背景颜色等友好展示的布局源码如下所示 //编辑按钮QPushButton* edit new QPushButton();edit-setIcon(QIcon(:/index/img/edit.png));edit-setIconSize(QSize(24, 24));edit-setStyleSheet(QPushButton { border: none; });edit-setCursor(Qt::PointingHandCursor);//删除按钮QPushButton* deleteButton new QPushButton();deleteButton-setIcon(QIcon(:/index/img/delete.png));deleteButton-setIconSize(QSize(24, 24));deleteButton-setStyleSheet(background-color:rgba(0,0,0,0);border:none;);deleteButton-setCursor(Qt::PointingHandCursor);//按钮信号监听connect(edit,SIGNAL(clicked()),this,SLOT(editBasemsg()));connect(deleteButton,SIGNAL(clicked()),this,SLOT(delBasemsg()));QWidget* widget new QWidget();QHBoxLayout* layout new QHBoxLayout(widget);layout-addWidget(edit);layout-addWidget(deleteButton);layout-setAlignment(Qt::AlignCenter);layout-setContentsMargins(0, 0, 0, 0);widget-setLayout(layout);ui-tableWidget-setCellWidget(row, column, widget); 4QTableView创建右键菜单 ①在头文件中添加右键菜单绑定的槽函数源码如下 //tab_basemsg.h private slots://处理右键菜单请求void tableWidget_MenuRequested(const QPoint pos); ②设置右键功能及关联信号和槽并实现槽函数在槽函数中增加具体的右键菜单名称源码如下 //tab_basemsg.cpp //设置右键菜单功能 ui-tableWidget-setContextMenuPolicy(Qt::CustomContextMenu); //绑定右键功能槽函数 connect(ui-tableWidget, QTableWidget::customContextMenuRequested, this, tab_basemsg::tableWidget_MenuRequested);//槽函数实现 void tab_basemsg::tableWidget_MenuRequested(const QPoint pos) {QModelIndex index ui-tableWidget-indexAt(pos);//获取当前行if (!index.isValid()) return;QMenu menu(this);QAction *DiplaymsgAction menu.addAction(tr(查看详情));connect(DiplaymsgAction,QAction::triggered,[](){//获取选择的单元格QListQTableWidgetItem * selected_cells ui-tableWidget-selectedItems();if(!selected_cells.isEmpty()){QTableWidgetItem *codeCell ui-tableWidget-item(selected_cells.first()-row(),HEAD_BASEMSG_CODE);if(codeCell!nullptr){QString code codeCell-text();stBasemsg basemsgm_basemsgmap[code];basemsgDialg-setModal(false);basemsgDialg-setWindowTitle(保存);//basemsgDialg-setFixedSize(500,400);basemsgDialg-open();basemsgDialg-init(1,basemsg);basemsgDialg-exec();}}});QAction *NetpingAction menu.addAction(tr(Ping此计算机));connect(NetpingAction,QAction::triggered,[](){//获取选择的单元格QListQTableWidgetItem * selected_cells ui-tableWidget-selectedItems();if(!selected_cells.isEmpty()){QTableWidgetItem *codeCell ui-tableWidget-item(selected_cells.first()-row(),HEAD_BASEMSG_CODE);if(codeCell!nullptr){QString code codeCell-text();stBasemsg basemsgm_basemsgmap[code];QString ipbasemsg.Ip;qDebug() __LINE__ ip;pingdlg-setIp(ip);pingdlg-setModal(false);pingdlg-setWindowTitle(PING测试);pingdlg-setFixedSize(500,400);pingdlg-open();pingdlg-init();pingdlg-exec();}}});menu.exec(QCursor::pos());//menu.exec(ui-tableWidget-mapToGlobal(pos)); }篇尾 因为多个勾选项很多情况下涉及多项数据的处理有些处理是要异步才不会导致主界面卡顿下一篇用多线程ping全局变量结果展示技术点【QT常用技术讲解】多线程处理全局变量处理异步事件并获取多个线程返回的结果来详细讲解【多线程解决QTableView多勾选项右键菜单功能卡顿问题】。
http://www.hkea.cn/news/14438860/

相关文章:

  • 西安网站建设新闻wp网站建设模板
  • 简述网站技术解决方案wordpress微信缩图
  • 常州微信网站建设价位口碑营销的产品
  • 网站域名重要吗网站建设需要多少钱费用
  • 网站制作语言关于数据机房建设的网站
  • 提供网站建设备案怀化网站优化哪个好
  • ps制作个性字网站有没有网站开发软件
  • 如何做网站发产品销售wordpress建淘宝客
  • 广州海珠区赤岗 新港网站建设公司wordpress多城市seo
  • 博山做网站竞价排名推广方案
  • 长沙品牌logo设计公司网站推广和优化教程
  • 襄阳网站制作购物网站系统建设方案
  • 北京网站制作策划给别人做网站去掉版权
  • 常德网站建做优品购类似网站
  • 梅州市工程建设交易中心网站新手学做网站12天婴
  • 做的好的食用菌公司网站有天津最好的网站建设
  • pc端手机网站 样式没居中公众号设计平台
  • 企业门户网站功能列表信息科技公司名字
  • phpwind的代表网站网站建设都包含哪些内容
  • 杭州桐庐网站建设dede页码的调用 网站
  • 汽车行业网站建设wordpress注册显示密码
  • pc端和手机端网站建设宝应县建设局网站
  • 基于jsp企业网站开发设计答辩ppt用什么自己做网站吗
  • 什么网站可以买世界杯好的网站你们会感谢我的
  • 企业网站建设业务报价单做卖车网站需要什么手续
  • 湛江网站制作推广做网站业务员应该了解什么
  • 宿迁做网站优化资阳网站开发
  • 浙江省城乡和住房建设厅网站罗店网站建设
  • 网络营销网站规划建设广西城乡住房建设厅网站
  • 各类专业网站建设网站建设必要性