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

彩票网站建设成本网络营销应用方式

彩票网站建设成本,网络营销应用方式,上海到北京的火车,wordpress推广浏览插件在Qt窗口中添加右键菜单 基于鼠标的事件实现流程demo 基于窗口的菜单策略实现Qt::DefaultContextMenuQt::ActionsContextMenuQt::CustomContextMenu信号API 基于鼠标的事件实现 流程 需要使用:事件处理器函数(回调函数) 在当前窗口类中重写鼠标操作相关的的事件处理器函数有两个可以选择 // 以下两个事件二选一即可, 只是事件函数被调用的时机不同罢了 // 这个时机对右键菜单的显示没有任何影响 [virtual protected] void QWidget::mousePressEvent(QMouseEvent *event); [virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event);在数据表事件处理器函数内部判断是否按下了鼠标右键如果按下了鼠标右键创建菜单对象(也可以提前先创建处理), 并将其显示出来 // 关于QMenu类型的菜单显示需要调用的 API // 参数 p 就是右键菜单需要显示的位置, 这个坐标需要使用屏幕坐标 // 该位置坐标一般通过调用 QCursor::pos() 直接就可以得到了 QAction *QMenu::exec(const QPoint p, QAction *action nullptr);demo 在头文件中添加 mousePressEvent 函数的声明 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include QMainWindowQT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();private:Ui::MainWindow *ui;protected:// 鼠标按下, 该函数被Qt框架调用, 需要重写该函数void mousePressEvent(QMouseEvent *event); }; #endif // MAINWINDOW_H 在对应的cpp中添加 mousePressEvent 函数的定义 #include mainwindow.h #include ui_mainwindow.h #include QIcon #include QTextEdit #include QMessageBox #include QMouseEventMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);// 创建图标对象QIcon Q(:/new/prefix1/img/a.png);// QWidget类的 公共成员函数this-setWindowIcon(Q);// 给窗口设置图标// 弊端: 发布的 exe 必须要加载 d:\\pic\\1.ico 如果当前主机对应的目录中没有图片, 图标就无法被加载// 发布 exe 需要额外发布图片, 将其部署到某个目录中//setWindowIcon(QIcon(d:\\pic\\1.ico));//使用API布局// 创建符窗口对象//QWidget *window1 new QWidget();// 创建若干个子窗口对象QPushButton *button1 new QPushButton(One);QPushButton *button2 new QPushButton(Two);QPushButton *button3 new QPushButton(Three);QPushButton *button4 new QPushButton(Four);QPushButton *button5 new QPushButton(Five);// 创建水平布局对象QHBoxLayout *layout1 new QHBoxLayout;// 将子窗口添加到布局中layout1-addWidget(button1);layout1-addWidget(button2);layout1-addWidget(button3);layout1-addWidget(button4);layout1-addWidget(button5);// 将水平布局设置给父窗口对象this-ui-widget_3-setLayout(layout1);// 显示父窗口this-ui-widget_3-show();//使用API布局//创建垂直布局// 创建符窗口对象//QWidget *window2 new QWidget;// 创建若干个子窗口对象QPushButton *button21 new QPushButton(One);QPushButton *button22 new QPushButton(Two);QPushButton *button23 new QPushButton(Three);QPushButton *button24 new QPushButton(Four);QPushButton *button25 new QPushButton(Five);// 创建垂直布局对象QVBoxLayout *layout2 new QVBoxLayout;// 将子窗口添加到布局中layout2-addWidget(button21);layout2-addWidget(button22);layout2-addWidget(button23);layout2-addWidget(button24);layout2-addWidget(button25);// 将水平布局设置给父窗口对象this-ui-widget_4-setLayout(layout2);// 显示父窗口this-ui-widget_4-show();//使用API布局//创建网格布局// 创建父窗口对象//QWidget* window3 new QWidget;// 创建子窗口对象QPushButton *button31 new QPushButton(One);QPushButton *button32 new QPushButton(Two);QPushButton *button33 new QPushButton(Three);QPushButton *button34 new QPushButton(Four);QPushButton *button35 new QPushButton(Five);QPushButton *button6 new QPushButton(Six);// 多行文本编辑框QTextEdit* txedit3 new QTextEdit;txedit3-setText(我占用了两行两列的空间哦。);QGridLayout* layout new QGridLayout;// 按钮起始位置: 第1行, 第1列, 该按钮占用空间情况为1行1列layout-addWidget(button1, 0, 0);// 按钮起始位置: 第1行, 第2列, 该按钮占用空间情况为1行1列layout-addWidget(button2, 0, 1);// 按钮起始位置: 第1行, 第3列, 该按钮占用空间情况为1行1列layout-addWidget(button3, 0, 2);// 编辑框起始位置: 第2行, 第1列, 该按钮占用空间情况为2行2列layout-addWidget(txedit3, 1, 0, 2, 2);// 按钮起始位置: 第2行, 第3列, 该按钮占用空间情况为1行1列layout-addWidget(button4, 1, 2);// 按钮起始位置: 第3行, 第3列, 该按钮占用空间情况为1行1列layout-addWidget(button5, 2, 2);// 按钮起始位置: 第4行, 第1列, 该按钮占用空间情况为1行3列layout-addWidget(button6, 3, 0, 1, 3);// 网格布局设置给父窗口对象this-ui-widget_5-setLayout(layout);// 显示父窗口this-ui-widget_5-show(); }MainWindow::~MainWindow() {delete ui; }void MainWindow::mousePressEvent(QMouseEvent *event){// 判断用户按下的是哪一个鼠标键if(event-button() Qt::RightButton){// 弹出一个菜单, 菜单项是 QAction 类型QMenu menu;QAction* act menu.addAction(C);connect(act, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是C...);});menu.addAction(Java);menu.addAction(Python);menu.exec(QCursor::pos()); // 右键菜单被模态显示出来了}} 效果 我稍作修改添加左击和右击的效果 void MainWindow::mousePressEvent(QMouseEvent *event){// 判断用户按下的是哪一个鼠标键if(event-button() Qt::RightButton){// 弹出一个菜单, 菜单项是 QAction 类型QMenu menu;QAction* act1 menu.addAction(C);connect(act1, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是C...);});QAction* act2 menu.addAction(Java);connect(act2, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是JAVA...);});QAction* act3 menu.addAction(Python);connect(act3, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是PYthon...);});menu.exec(QCursor::pos()); // 右键菜单被模态显示出来了}if(event-button() Qt::LeftButton){// 弹出一个菜单, 菜单项是 QAction 类型QMenu menu;QAction* act menu.addAction(hello);connect(act, QAction::triggered, this, [](){QMessageBox::information(this, title, 您使用鼠标左键点击了一下);});menu.exec(QCursor::pos()); // 右键菜单被模态显示出来了}}基于窗口的菜单策略实现 这种方式是使用 Qt 中 QWidget类中的右键菜单函数 QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy policy) 来实现 API如下 // 函数原型: void QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy policy); 参数: - Qt::NoContextMenu -- 不能实现右键菜单- Qt::PreventContextMenu -- 不能实现右键菜单- Qt::DefaultContextMenu -- 基于事件处理器函数 QWidget::contextMenuEvent() 实现- Qt::ActionsContextMenu -- 添加到当前窗口中所有 QAction 都会作为右键菜单项显示出来- Qt::CustomContextMenu -- 基于 QWidget::customContextMenuRequested() 信号实现Qt::DefaultContextMenu 第一步在相应的窗口的类的头文件中添加这个函数 QWidget::contextMenuEvent() 的声明 第二步在这个窗口类的构造函数设置右键菜单策略 第三步在这个窗口类的源文件中重写事件处理器函数 contextMenuEvent() Qt::ActionsContextMenu 使用这个策略实现右键菜单, 是最简单的一种, 我们只需要创建一些 QAction类型的对象并且将他们添加到当前的窗口中, 当我们在窗口中点击鼠标右键这些QAction类型的菜单项就可以显示出来了。 Qmainwindow的调用代码 在mydialog2中 #include mydialog2.h #include ui_mydialog2.h #include QAction #include QMessageBoxmyDialog2::myDialog2(QWidget *parent) :QDialog(parent),ui(new Ui::myDialog2) {ui-setupUi(this);// 只要将某个QAction添加给对应的窗口, 这个action就是这个窗口右键菜单中的一个菜单项了// 在窗口中点击鼠标右键, 就可以显示这个菜单setContextMenuPolicy(Qt::ActionsContextMenu);// 给当前窗口添加QAction对象QAction* act1 new QAction(C);QAction* act2 new QAction(Java);QAction* act3 new QAction(Python);this-addAction(act1);this-addAction(act2);this-addAction(act3);connect(act1, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是C...);});}myDialog2::~myDialog2() {delete ui; } Qt::CustomContextMenu 使用这个策略实现右键菜单, 当点击鼠标右键窗口会产生一个 QWidget::customContextMenuRequested() 信号注意仅仅只是发射信号意味着要自己写显示右键菜单的槽函数slot这个信号是QWidget唯一与右键菜单有关的信号。 信号API // 注意: 信号中的参数pos为当前窗口的坐标并非屏幕坐标右键菜单显示需要使用屏幕坐标 [signal] void QWidget::customContextMenuRequested(const QPoint pos)#include mydialog3.h #include ui_mydialog3.h #include QMenu #include QMessageBoxmyDialog3::myDialog3(QWidget *parent) :QDialog(parent),ui(new Ui::myDialog3) {ui-setupUi(this);// 策略 Qt::CustomContextMenu// 当在窗口中点击鼠标右键, 窗口会发出一个信号: QWidget::customContextMenuRequested()// 对应发射出的这个信号, 需要添加一个槽函数, 用来显示右键菜单this-setContextMenuPolicy(Qt::CustomContextMenu);connect(this, QDialog::customContextMenuRequested, this, [](const QPoint pos){// 参数 pos 是鼠标按下的位置, 但是不能直接使用, 这个坐标不是屏幕坐标, 是当前窗口的坐标// 如果要使用这个坐标需要将其转换为屏幕坐标QMenu menu;QAction* act menu.addAction(C);connect(act, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是C...);});QAction* act2 menu.addAction(Java);connect(act2, QAction::triggered, this, [](){QMessageBox::information(this, title, 您选择的是加瓦);});menu.addAction(Python);// menu.exec(QCursor::pos());// 将窗口坐标转换为屏幕坐标QPoint newpt this-mapToGlobal(pos);menu.exec(newpt);});}myDialog3::~myDialog3() {delete ui; }
http://www.yutouwan.com/news/184699/

相关文章:

  • 公司网站建设的系统功能需求长春网站优化seo
  • 建站平台转型怎么做便民信息网站
  • 中小企业网站的建设实践报告内江做网站多少钱
  • 如何跟进psd做网站wordpress的登录页面模板
  • 厦门专业网站免费的网页模板网站
  • 丽水微信网站建设公司营销型单页面网站
  • 织梦网站装修公司源码建一个网站流程
  • 门户网站的建设制作单页网站多少钱
  • php网站进后台从零开始学wordpress
  • 网站进入考核期要多久wordpress密码错误
  • 文化建设 设计公司网站公众号怎么开通商城
  • WordPress瀑布流图片站单位网址怎么编
  • 企业系统建设赣州做网站优化
  • 创建app与网站的区别wordpress linux伪静态
  • 个人域名备案快的网站北京的网站建设
  • asp网站开发的背景与环境北京网页设计公司兴田德润优选
  • 网站界面设计如何实现功能美与形式美的统一教你用wordpress
  • 移动网站和定制网站重庆小程序商城开发
  • 网站优化之站外优化技巧潮流设计网站
  • 哪个网站做简历做钓鱼网站用哪种编程语言
  • 网站的建设与运营专业网络工程建设
  • 空间信息网站淘宝网请人做淘宝客网站
  • 网站建设 步骤汕头拿家做网站
  • 专业北京网站建设公司影楼和工作室的区别
  • 可信网站认证 技术支持单位上海搜索优化推广
  • 开发建设网站多久wordpress修改根目录
  • 租网站服务器一个月多少钱北京市建设厅门户网站
  • 成都优秀网站建设做网站要具备哪些
  • 网站开发公司盈利自己做的网站找不到了
  • 开封建站公司注册一个公司的所有流程