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

美容医院网站建设无锡市新区建设环保局网站

美容医院网站建设,无锡市新区建设环保局网站,wordpress要用什么代码,怎么验证网站QT自制软键盘 最完美、最简单、跟自带虚拟键盘一样 [1] QT自制软键盘 最完美、最简单、跟自带虚拟键盘一样一、本自制虚拟键盘特点二、windows打开系统自带软键盘三、让键盘界面保持在最上方、不改变底层界面焦点四、长按按键重复输入键盘内容五、模拟键盘点击事件完成虚拟键盘… QT自制软键盘 最完美、最简单、跟自带虚拟键盘一样 [1] QT自制软键盘 最完美、最简单、跟自带虚拟键盘一样一、本自制虚拟键盘特点二、windows打开系统自带软键盘三、让键盘界面保持在最上方、不改变底层界面焦点四、长按按键重复输入键盘内容五、模拟键盘点击事件完成虚拟键盘输入六、键盘符号输入七、界面八、头文件代码九、源文件代码 [1] QT自制软键盘 最完美、最简单、跟自带虚拟键盘一样 原文链接https://blog.csdn.net/qq_41632571/article/details/125808787 一、本自制虚拟键盘特点 1.键盘界面保持在所有界面最上方。 2.点击键盘按钮不会改变底层文本输入框焦点。 3.通过模拟键盘点击事件完成键盘输入文本信息。 4.包含各种键盘自带符号输入。 5.长按按键可以持续重复输入键盘内容。 6.支持win7、win10、Linux等各个系统。 7.界面好看。 总之跟真的虚拟键盘一样不会有不爽的地方 二、windows打开系统自带软键盘 QDesktopServices::openUrl(QUrl(osk.exe, QUrl::TolerantMode));传统打开系统自带虚拟键盘的方法如上一行代码即可但是系统自带的虚拟键盘不一定好用有的按键太小有的电脑上可能没有自带的软键盘干脆直接写一个。 三、让键盘界面保持在最上方、不改变底层界面焦点 很多自制键盘时不知道怎么使键盘保持在最顶层发现点击键盘界面后系统焦点在键盘界面上了光标不在底层的行输入框里就通过输入完成后点击确定的方式将键盘内容传到底层界面显得不nice其实这两个问题都很简单能够解决代码如下 this-setWindowFlags(Qt::WindowStaysOnTopHint | Qt::WindowDoesNotAcceptFocus);Qt::WindowStaysOnTopHint 设置窗口置顶 Qt::WindowDoesNotAcceptFocus 设置无焦点窗口 四、长按按键重复输入键盘内容 特别是我们点击退格删除键时文本比较多是我们使用真实键盘就会长按退格键把十多个文本挨个删除而使用虚拟键盘时要按十多次退格键显得不nice。那么我们使用QPushButton的setAutoRepeat为true就可以实现按键长按功能了设置重复操作延时为500ms差不多了按下的时长超过500ms后马上再次执行按键槽函数。 pbtn-setAutoRepeat(true); //允许自动重复 pbtn-setAutoRepeatDelay(500);//设置重复操作的时延五、模拟键盘点击事件完成虚拟键盘输入 一些自制虚拟键盘完成键盘输入的方式是同传递文本到输入框的方式话不多说就是不nice。点击虚拟按键直接发送对应的按键点击事件就很nice这样其实就不会太死甚至中文输入也可以我们写的是键盘不是写中文输入法那些下载网上含有中文输入法的库的大可不必输入法你系统用的什么就是什么。如果你想中文输入系统下载的有搜狗输入法你的键盘只需按下ctrlshift切换输入法即可而不是在键盘里实现中文输入法的功能。那样不nice模拟发送按键点击事件代码如下。 QPushButton* pbtn (QPushButton*)sender();if (pbtn-text() a pbtn-text() z) {QKeyEvent keyPress(QEvent::KeyPress, int(pbtn-text().at(0).toLatin1()) - 32, Qt::NoModifier, pbtn-text());QKeyEvent keyRelease(QEvent::KeyRelease, int(pbtn-text().at(0).toLatin1()) - 32, Qt::NoModifier, pbtn-text());QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}通过QApplication::sendEvent发送一个按键按下和按键松开的事件就相当于模拟一个按键按下事件 QKeyEvent说明 QKeyEvent::QKeyEvent(QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, const QString text QString(), bool autorep false, ushort count 1) 类型参数必须为QEvent::KeyPress、QEvent::KeyRelease或QEvent::ShortcutOverride。 Int key是事件循环应该监听的Qt:: key的代码。 如果key为0则事件不是已知键的结果; 例如它可能是组合序列或键盘宏的结果。 修饰符包含键盘修饰符给定的文本是键生成的Unicode文本。 如果autorep为真isAutoRepeat()将为真。 Count是事件中涉及的键的数量。 QKeyEvent在我们这里用4个参数就行了第二个参数Qt:: key对应的按键第四个参数是需要发送的文本没有这个参数是无法输入任何内容的。 QApplication::sendEvent的第一个参数非常重要是接收键盘输入的控件比如是底层界面的lineEdit。 六、键盘符号输入 m_mapSymbolKeys.insert(~, Qt::Key_AsciiTilde);m_mapSymbolKeys.insert(, Qt::Key_nobreakspace); m_mapSymbolKeys.insert(-, Qt::Key_Minus);m_mapSymbolKeys.insert(_, Qt::Key_Underscore);m_mapSymbolKeys.insert(, Qt::Key_Plus);m_mapSymbolKeys.insert(, Qt::Key_Equal);m_mapSymbolKeys.insert(,, Qt::Key_Comma);m_mapSymbolKeys.insert(., Qt::Key_Period);m_mapSymbolKeys.insert(/, Qt::Key_Slash);m_mapSymbolKeys.insert(, Qt::Key_Less);m_mapSymbolKeys.insert(, Qt::Key_Greater);m_mapSymbolKeys.insert(?, Qt::Key_Question);m_mapSymbolKeys.insert([, Qt::Key_BracketLeft);m_mapSymbolKeys.insert(], Qt::Key_BracketRight);m_mapSymbolKeys.insert({, Qt::Key_BraceLeft);m_mapSymbolKeys.insert(}, Qt::Key_BraceRight); m_mapSymbolKeys.insert(|, Qt::Key_Bar);m_mapSymbolKeys.insert(\\, Qt::Key_Backslash);m_mapSymbolKeys.insert(:, Qt::Key_Colon);m_mapSymbolKeys.insert(;, Qt::Key_Semicolon);m_mapSymbolKeys.insert(\, Qt::Key_QuoteLeft);m_mapSymbolKeys.insert(, Qt::Key_Apostrophe);QKeyEvent keyPress(QEvent::KeyPress, m_mapSymbolKeys.value(symbol), Qt::NoModifier, symbol);QKeyEvent keyRelease(QEvent::KeyRelease, m_mapSymbolKeys.value(symbol), Qt::NoModifier, symbol);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);键盘输入特定的符号重要是找到QKeyEvent第二个参数对应的按键值即可。按键中的值被都在qnamespace.h的头文件中的enum Key枚举类型内。 七、界面 八、头文件代码 #pragma once #pragma execution_character_set(utf-8) #include QDialog #include ui_frmKeyBoard.h #include moveWidget.h #include QPushButton #include QKeyEvent #include QDebug #include QStyleclass frmKeyBoard : public QDialog {Q_OBJECTpublic:frmKeyBoard(QWidget *parent nullptr);~frmKeyBoard();void initFocusWidget(QWidget*);private slots:void slotKeyButtonClicked();void slotKeyLetterButtonClicked();void slotKeyNumberButtonClicked();private:Ui::frmKeyBoardClass ui;void initFrm();void initStyleSheet();QWidget* m_focusWidget; //键盘输入主窗口QVectorQPushButton* m_letterKeys;QVectorQPushButton* m_NumberKeys;QMapQString, Qt::Key m_mapSymbolKeys;}; 九、源文件代码 #include frmKeyBoard.hfrmKeyBoard::frmKeyBoard(QWidget *parent): QDialog(parent) {ui.setupUi(this);this-setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | Qt::WindowDoesNotAcceptFocus);this-setWindowTitle(屏幕键盘);this-setWindowModality(Qt::WindowModal); this-setAttribute(Qt::WA_DeleteOnClose);MoveWidget* moveWidget new MoveWidget();moveWidget-setWidget(this);this-initFrm();this-initStyleSheet(); }frmKeyBoard::~frmKeyBoard() { }void frmKeyBoard::initFocusWidget(QWidget* widget) {m_focusWidget widget; }void frmKeyBoard::initFrm() {ui.pushButton_closeKeyboard-setIcon(style()-standardIcon(QStyle::SP_TitleBarCloseButton));m_letterKeys.clear();m_NumberKeys.clear();QListQPushButton* pbtns this-findChildrenQPushButton*();foreach(QPushButton * pbtn, pbtns) {pbtn-setAutoRepeat(true); //允许自动重复pbtn-setAutoRepeatDelay(500);//设置重复操作的时延if (pbtn-text() a pbtn-text() z) {connect(pbtn, QPushButton::clicked, this, frmKeyBoard::slotKeyLetterButtonClicked);m_letterKeys.push_back(pbtn);}else if (pbtn-text().toInt() 0 pbtn-text().toInt() 9 || pbtn-text() 0) {connect(pbtn, QPushButton::clicked, this, frmKeyBoard::slotKeyNumberButtonClicked);m_NumberKeys.push_back(pbtn);}else{connect(pbtn, QPushButton::clicked, this, frmKeyBoard::slotKeyButtonClicked);}}m_mapSymbolKeys.insert(~, Qt::Key_AsciiTilde);m_mapSymbolKeys.insert(, Qt::Key_nobreakspace); m_mapSymbolKeys.insert(-, Qt::Key_Minus);m_mapSymbolKeys.insert(_, Qt::Key_Underscore);m_mapSymbolKeys.insert(, Qt::Key_Plus);m_mapSymbolKeys.insert(, Qt::Key_Equal);m_mapSymbolKeys.insert(,, Qt::Key_Comma);m_mapSymbolKeys.insert(., Qt::Key_Period);m_mapSymbolKeys.insert(/, Qt::Key_Slash);m_mapSymbolKeys.insert(, Qt::Key_Less);m_mapSymbolKeys.insert(, Qt::Key_Greater);m_mapSymbolKeys.insert(?, Qt::Key_Question);m_mapSymbolKeys.insert([, Qt::Key_BracketLeft);m_mapSymbolKeys.insert(], Qt::Key_BracketRight);m_mapSymbolKeys.insert({, Qt::Key_BraceLeft);m_mapSymbolKeys.insert(}, Qt::Key_BraceRight); m_mapSymbolKeys.insert(|, Qt::Key_Bar);m_mapSymbolKeys.insert(\\, Qt::Key_Backslash);m_mapSymbolKeys.insert(:, Qt::Key_Colon);m_mapSymbolKeys.insert(;, Qt::Key_Semicolon);m_mapSymbolKeys.insert(\, Qt::Key_QuoteLeft);m_mapSymbolKeys.insert(, Qt::Key_Apostrophe); }void frmKeyBoard::initStyleSheet() {QString qss;qss QWidget{ background-color:rgb(26,26,26)};qss QPushButton{ color:white; background-color:rgb(51,51,51); height:60px; font-size:bold 15pt; border:1px solid rgb(26,26,26); border-radius: 0px; min-width:50px;};qss QPushButton:hover{background-color:rgb(229,229,229); color:black;};qss QPushButton:pressed,QPushButton:checked{background-color:rgb(0,118,215);};qss #pushButton_closeKeyboard{background-color:rgba(0,0,0,0); border:0px};qss #pushButton_closeKeyboard:hover{background-color:#b30220;};qss #pushButton_space{min-width:500px;};qss #pushButton_backspace,#pushButton_shift{min-width:100px;};qss #pushButton_enter{min-width:120px;};qss #pushButton_tab,#pushButton_ctrl{min-width:70px;};qss #pushButton_capsLock{min-width:80px;};qss #pushButton_up{min-width:150px;};this-setStyleSheet(qss); }void frmKeyBoard::slotKeyButtonClicked() {QPushButton* pbtn (QPushButton*)sender();QString objectName pbtn-objectName();if (objectName pushButton_closeKeyboard) {this-close();return;}if (pbtn-text().contains(Backspace)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Backspace, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Backspace, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Caps)) { if (pbtn-isChecked()) {for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toUpper());}}else {for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toLower());}}}else if(pbtn-text() Space) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Space, Qt::NoModifier, );QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Space, Qt::NoModifier, );QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Tab)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Tab, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Enter)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Enter, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Enter, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Shift)) {if (pbtn-isChecked()) {for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toUpper());}}else {for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toLower());}}QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Shift, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Shift, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Ctrl)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Control, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Control, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Win)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Menu, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Menu, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(Alt)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Alt, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Alt, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(↑)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Up, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(↓)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Down, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(←)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Left, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Left, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text().contains(→)) {QKeyEvent keyPress(QEvent::KeyPress, Qt::Key_Right, Qt::NoModifier);QKeyEvent keyRelease(QEvent::KeyRelease, Qt::Key_Right, Qt::NoModifier);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else {QString symbol;if (ui.pushButton_shift-isChecked())symbol pbtn-text().split(\n).at(0);elsesymbol pbtn-text().split(\n).at(1);QKeyEvent keyPress(QEvent::KeyPress, m_mapSymbolKeys.value(symbol), Qt::NoModifier, symbol);QKeyEvent keyRelease(QEvent::KeyRelease, m_mapSymbolKeys.value(symbol), Qt::NoModifier, symbol);QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}//取消组合键按下if (!pbtn-text().contains(Shift) !pbtn-text().contains(Ctrl) !pbtn-text().contains(Win) !pbtn-text().contains(Alt)) {if (ui.pushButton_shift-isChecked()) {ui.pushButton_shift-setChecked(false);for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toLower());}}if (ui.pushButton_ctrl-isChecked())ui.pushButton_ctrl-setChecked(false);if (ui.pushButton_win-isChecked())ui.pushButton_win-setChecked(false);if (ui.pushButton_alt-isChecked())ui.pushButton_alt-setChecked(false);} }void frmKeyBoard::slotKeyLetterButtonClicked() {QPushButton* pbtn (QPushButton*)sender();if (pbtn-text() a pbtn-text() z) {QKeyEvent keyPress(QEvent::KeyPress, int(pbtn-text().at(0).toLatin1()) - 32, Qt::NoModifier, pbtn-text());QKeyEvent keyRelease(QEvent::KeyRelease, int(pbtn-text().at(0).toLatin1()) - 32, Qt::NoModifier, pbtn-text());QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}else if (pbtn-text() A pbtn-text() Z) {QKeyEvent keyPress(QEvent::KeyPress, int(pbtn-text().at(0).toLatin1()), Qt::NoModifier, pbtn-text());QKeyEvent keyRelease(QEvent::KeyRelease, int(pbtn-text().at(0).toLatin1()), Qt::NoModifier, pbtn-text());QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);}//取消组合键按下if (ui.pushButton_shift-isChecked()) {ui.pushButton_shift-setChecked(false);for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toLower());}}if (ui.pushButton_ctrl-isChecked())ui.pushButton_ctrl-setChecked(false);if (ui.pushButton_win-isChecked())ui.pushButton_win-setChecked(false);if (ui.pushButton_alt-isChecked())ui.pushButton_alt-setChecked(false); }void frmKeyBoard::slotKeyNumberButtonClicked() {QPushButton* pbtn (QPushButton*)sender();QKeyEvent keyPress(QEvent::KeyPress, pbtn-text().toInt() 48, Qt::NoModifier, pbtn-text());QKeyEvent keyRelease(QEvent::KeyRelease, pbtn-text().toInt() 48, Qt::NoModifier, pbtn-text());QApplication::sendEvent(m_focusWidget-focusWidget(), keyPress);QApplication::sendEvent(m_focusWidget-focusWidget(), keyRelease);//取消组合键按下if (ui.pushButton_shift-isChecked()) {ui.pushButton_shift-setChecked(false);for (auto pbtnKey : m_letterKeys) {pbtnKey-setText(pbtnKey-text().toLower());}}if (ui.pushButton_ctrl-isChecked())ui.pushButton_ctrl-setChecked(false);if (ui.pushButton_win-isChecked())ui.pushButton_win-setChecked(false);if (ui.pushButton_alt-isChecked())ui.pushButton_alt-setChecked(false); }
http://www.dnsts.com.cn/news/179834.html

相关文章:

  • 网站专题教程wordpress文章列表获取文章摘要
  • 网页模板素材网站ip138查询网站网址域名ip
  • 哪里有零基础网站建设教学培训个人网站建设案例教程
  • 做ppt的模板网站有哪些专业百度seo排名优化
  • 网站建设公司推荐q479185700顶上公众号开发者密钥重置影响
  • 购物网站开发报告网站建设 发布
  • 修水县城乡建设局官方网站有源码手机怎么搭建网站
  • 自己怎么做机构网站.tech 域名 网站
  • 服装设计素材网站大全简易软件下载
  • 广告公司网站建设费用网站改版协议
  • 网站开发小图标免费广告网
  • 广州市白云区网站建设维护用dreamware做网站
  • 最个人网站什么叫展示型网站
  • 做微信扫码网站asp网站检查
  • 东莞主页网站制作电子购物网站建设目的
  • 百度不让访问危险网站怎么办网站运营 开发
  • 杭州建设网站哪家好表白墙网站怎么做
  • .net做网站后台交换友情链接的渠道有哪些
  • 网站建设基础与实践厦门做网站设计
  • 网站做不做账wordpress 链接地址
  • 设计素材网站外网wordpress zend
  • cms做的电影网站网站建设找c宋南南
  • 网站建设费税收分类怎么申请网站空间
  • 做网站优化如何写方案上海闵行区邮编
  • 网站大全官网wordpress管理员密码忘记
  • 网站建设方案后期服务移动wordpress+到根目录
  • 金昌市建设局网站优质的常州网站建设
  • 制作网站的列子毕设网站
  • wordpress建站创业网络营销引流到微信xiala5
  • 北京推广网站成都排名seo公司