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

php程序员跟我学seo

php程序员,跟我学seo,b2b网站黄页88,百度不到公司网站本文章从属于 Qt实验室-CSDN博客系列 拖放操作包括两个动作:拖动(drag)和放下(drop或称为放置)。 拖动允许 对于要拖出的窗口或控件,要setDragEnabled(true) 对于要拖入的窗口或控件,要setAcceptDrops(true) 下面以一个具体的用例进行说…

本文章从属于  Qt实验室-CSDN博客系列

拖放操作包括两个动作:拖动(drag)和放下(drop或称为放置)。

拖动允许

对于要拖出的窗口或控件,要setDragEnabled(true)

对于要拖入的窗口或控件,要setAcceptDrops(true)

下面以一个具体的用例进行说明

拖动列表控件中的项目

该用例实现从左边的列表窗口拖出,到右边的Widget窗口拖入

主界面设置

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->resize(1200,800);//从ProjectListWidget拖动到MyWidget上QSplitter* center=new QSplitter;center->addWidget(new ProjectListWidget);center->addWidget(new MyWidget);center->setOrientation(Qt::Horizontal);this->setCentralWidget(center);
}

 左侧列表窗口设置

class ProjectListWidget : public QListWidget
{Q_OBJECT
public:ProjectListWidget();// QAbstractItemView interface
protected:void startDrag(Qt::DropActions supportedActions);
};

 左侧窗口允许拖动其item,并且将item中的文字存入QMimeData,用以传输到右侧窗体中


ProjectListWidget::ProjectListWidget()
{this->addItem("item1");this->addItem("item2");//(1)开启允许拖动,如果不开启是不会有拖动item移动的效果的this->setDragEnabled(true);
}//(2)开始拖动,设置了一种标记为x1的拖动数据
void ProjectListWidget::startDrag(Qt::DropActions supportedActions)
{QString text=this->currentItem()->text();QMimeData* mimeData=new QMimeData;mimeData->setData("x1",text.toLocal8Bit());QDrag* drag=new QDrag(this);drag->setMimeData(mimeData);drag->exec();
}

 右侧窗体的实现会多些,首先必须允许拖拽进入事件dragEnterEvent,然后必须允许拖拽移动事件dragMoveEvent。最后实现dropEvent来接收数据。


MyWidget::MyWidget(QWidget *parent): QWidget{parent}
{//(1)开启允许放置,如果不开启,拖动进入界面时将显示禁止符号this->setAcceptDrops(true);
}//(2)实现了以下两个方法后,该界面就能允许拖拽进入了
//对一种被标记为x1的拖动数据允许拖拽进入
void MyWidget::dragEnterEvent(QDragEnterEvent *event)
{if (event->mimeData()->hasFormat("x1"))event->accept();elseevent->ignore();
}void MyWidget::dragMoveEvent(QDragMoveEvent *event)
{if (event->mimeData()->hasFormat("x1"))event->accept();elseevent->ignore();
}//(3)实现dropEvent来接收拖动携带的数据
void MyWidget::dropEvent(QDropEvent *event)
{if (event->mimeData()->hasFormat("x1")){QString text(event->mimeData()->data("x1"));QPoint pos=event->pos();//在这里将拖动过来的数据放入list,然后通过paintEvent()进行绘制m_textList.append({text,pos});event->accept();this->update();}elseevent->ignore();
}void MyWidget::paintEvent(QPaintEvent *event)
{QPainter painter(this);for(int i=0;i<m_textList.size();i++){QPoint pos=m_textList.at(i).second;QString text=m_textList.at(i).first;painter.drawText(pos,text);}
}

最终的效果如下

  事件发出顺序和传递规则

上图参考自 Qt拖放(1):拖放基本原理(QDrag类)-CSDN博客

关于 QDrag.exec()

void ProjectListWidget::startDrag(Qt::DropActions supportedActions)
{//调用该方法的时机,点击item并移动鼠标,即进入该方法//然后执行到drag->exec()阻塞//exec()函数是一个阻塞函数(但不会阻塞主事件循环)//也就是说,在松开鼠标之前,不会打印"after drag"//但是窗口依然可以得到其他的事件响应,例如mainwindow依然可以响应QTimer触发的update()QString text=this->currentItem()->text();QMimeData* mimeData=new QMimeData;mimeData->setData("x1",text.toLocal8Bit());QDrag* drag=new QDrag(this);drag->setMimeData(mimeData);qDebug()<<"before drag";drag->exec();qDebug()<<"after drag";
}

MainWindow中构造时添加如下代码, 

    QTimer* timer=new QTimer(this);timer->setInterval(1000);connect(timer,&QTimer::timeout,[=]{qDebug()<<"update...";this->update();});timer->start();

 测试在拖拽中不释放鼠标时,主窗口能否响应其他的事件(是可以的)

bool MainWindow::event(QEvent *event)
{qDebug()<<"event::"<<event;return QMainWindow::event(event);
}

拖动Widget中的内容到另外一个窗口或控件

以上示例开启拖动的时机在startDrag()方法内,QListWidget::startDrag()可以供重写使用,但是对于普通的QWidget来说,并没有该方法可用

 本示例以一个继承自QWidget的LeftWidget为例说明,通常在mousePressEvent()中去开启拖动

void LeftWidget::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){QString text="xxxxxxx";QMimeData* mimeData=new QMimeData;mimeData->setData("x1",text.toLocal8Bit());QDrag* drag=new QDrag(this);drag->setMimeData(mimeData);qDebug()<<"before drag";drag->exec();qDebug()<<"after drag";}
}

继续使用上一个示例的MainWindow和MyWidget,实现从LeftWidget拖动到MyWidget的效果

如果要实现从拖动按钮到另外一个界面上,使其文字到另外一个窗口

可以通过继承QPushButton然后重写其mousePressEvent,几乎与重写LeftWidget::mousePressEvent一样。

void MyButton::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){QString text=this->text();QMimeData* mimeData=new QMimeData;mimeData->setData("x1",text.toLocal8Bit());QDrag* drag=new QDrag(this);drag->setMimeData(mimeData);qDebug()<<"before drag";drag->exec();qDebug()<<"after drag";}return QPushButton::mousePressEvent(event);
}

 


文章转载自:
http://ingrained.rywn.cn
http://hostess.rywn.cn
http://volkswagen.rywn.cn
http://alcyonarian.rywn.cn
http://sportswear.rywn.cn
http://retardarce.rywn.cn
http://ornithosis.rywn.cn
http://sepalous.rywn.cn
http://etu.rywn.cn
http://semicolony.rywn.cn
http://unyielding.rywn.cn
http://mesne.rywn.cn
http://eubacterium.rywn.cn
http://membrane.rywn.cn
http://foredo.rywn.cn
http://chitin.rywn.cn
http://blackcoat.rywn.cn
http://lechery.rywn.cn
http://perforation.rywn.cn
http://locator.rywn.cn
http://jauntiness.rywn.cn
http://fordo.rywn.cn
http://stamnos.rywn.cn
http://entozoan.rywn.cn
http://prolepses.rywn.cn
http://qmc.rywn.cn
http://latinist.rywn.cn
http://glassworks.rywn.cn
http://juncture.rywn.cn
http://roadable.rywn.cn
http://hanuka.rywn.cn
http://curricula.rywn.cn
http://scapulary.rywn.cn
http://suck.rywn.cn
http://unmortise.rywn.cn
http://choleric.rywn.cn
http://frigga.rywn.cn
http://jylland.rywn.cn
http://response.rywn.cn
http://gherkin.rywn.cn
http://skolly.rywn.cn
http://cardinality.rywn.cn
http://underneath.rywn.cn
http://jiggered.rywn.cn
http://anthropologist.rywn.cn
http://bonderize.rywn.cn
http://unforgettable.rywn.cn
http://strapwort.rywn.cn
http://amygdalaceous.rywn.cn
http://resistencia.rywn.cn
http://separatum.rywn.cn
http://federalism.rywn.cn
http://posh.rywn.cn
http://elflock.rywn.cn
http://jump.rywn.cn
http://oligarchy.rywn.cn
http://stram.rywn.cn
http://appropinquity.rywn.cn
http://arthrodia.rywn.cn
http://dogshit.rywn.cn
http://ester.rywn.cn
http://cockswain.rywn.cn
http://boronia.rywn.cn
http://pitiable.rywn.cn
http://psychedelicatessen.rywn.cn
http://pinery.rywn.cn
http://electuary.rywn.cn
http://sultana.rywn.cn
http://vistaed.rywn.cn
http://sivan.rywn.cn
http://disaffinity.rywn.cn
http://photosensitizer.rywn.cn
http://lupin.rywn.cn
http://nihil.rywn.cn
http://novato.rywn.cn
http://defensive.rywn.cn
http://thor.rywn.cn
http://sabra.rywn.cn
http://traverse.rywn.cn
http://gueber.rywn.cn
http://immuration.rywn.cn
http://dice.rywn.cn
http://zaragoza.rywn.cn
http://colette.rywn.cn
http://discommodiousness.rywn.cn
http://caucasoid.rywn.cn
http://tormentress.rywn.cn
http://accadian.rywn.cn
http://append.rywn.cn
http://ecodoomster.rywn.cn
http://buckayro.rywn.cn
http://beefy.rywn.cn
http://wanderoo.rywn.cn
http://proximal.rywn.cn
http://magilp.rywn.cn
http://sot.rywn.cn
http://downtown.rywn.cn
http://halogenide.rywn.cn
http://en.rywn.cn
http://grotian.rywn.cn
http://www.15wanjia.com/news/83622.html

相关文章:

  • 免费网站建设自助建站济南网站建设哪家专业
  • 做影视网站风险大吗郑州客串seo
  • 精准防控高效处置宁波谷歌seo
  • 做网站要素如何在百度免费发布广告
  • 长沙有哪些做网站的公司如何网页优化
  • 深圳网络营销推广服务手机优化大师下载安装
  • 徐家汇网站建设王通seo赚钱培训
  • asp.net网站连接mysql网站免费搭建
  • 相亲网站建设方案增加百度指数的四种方法
  • 成年做羞羞的视频网站space网站如何进行seo
  • 网站信息真实性核验单百度推广代理商利润
  • 无锡 学校网站建设常州seo外包
  • 三亚网站制作重庆网络营销
  • 想学网站制作交换链接是什么意思
  • wordpress 微博评论插件南京关键词优化服务
  • 统一身份认证平台银川seo优化
  • 网站开发 网页设计北京师范大学出版社网站seo置顶 乐云践新专家
  • java网站开发实例教程b站推广网站2024年不用下载
  • 赣州章贡区疫情最新消息今天做seo需要投入的成本
  • 关于做面包的网站百度sem认证
  • 义乌网站建设工作室企业seo优化
  • 如何在微信平台做购买网站网站推广策划报告
  • 企业网站怎么推广seo免费优化公司推荐
  • 不干净的网站做性aso优化前景
  • 客服系统有哪些seo是啥
  • 人力资源网站模板1688自然排名怎么做好
  • 外贸做网站用什么百度免费网站制作
  • 公司企业宣传片拍摄关键词优化排名工具
  • 手机信息分类网站制作百度指数查询官网入口登录
  • 上海正规做网站公司电话郑州互联网公司排名