日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT5_虚拟键盘

發(fā)布時間:2025/3/15 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT5_虚拟键盘 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?有的時候設計的是觸摸界面,需要虛擬鍵盤。QT5里面自帶了一個虛擬鍵盤,但總是用不明白。自己寫了一個,開源出來,分享給大家。聲明一個對象就可以直接用了

keyboard.h

//為了讓點擊右效果顯示,設置了樣式表的切換。自己用的時候可以根據(jù)情況修改 #ifndef KEYBOARD_H #define KEYBOARD_H#include <QDialog> #include <QLineEdit>namespace Ui { class KeyBoard; }class KeyBoard : public QDialog {Q_OBJECTpublic:explicit KeyBoard(QWidget *parent = nullptr);~KeyBoard();void setLineEditObj(QLineEdit* lineEdit);QLineEdit* edit; private:Ui::KeyBoard *ui; private slots:void key_0Pressed();void key_1Pressed();void key_2Pressed();void key_3Pressed();void key_4Pressed();void key_5Pressed();void key_6Pressed();void key_7Pressed();void key_8Pressed();void key_9Pressed();void key_DotPressed();void key_BackPressed();void key_EnterPressed(); };#endif // KEYBOARD_H

keyboard.cpp

#include "keyboard.h" #include "ui_keyboard.h" #include <QTime>KeyBoard::KeyBoard(QWidget *parent) :QDialog(parent),ui(new Ui::KeyBoard) {ui->setupUi(this);this->setWindowTitle("");this->edit = nullptr;//初始化把edit清空//this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);this->setWindowFlags(Qt::WindowStaysOnTopHint);edit = new QLineEdit();connect(this->ui->P_key0, &QPushButton::clicked, this, &KeyBoard::key_0Pressed);connect(this->ui->P_key1, &QPushButton::clicked, this, &KeyBoard::key_1Pressed);connect(this->ui->P_key2, &QPushButton::clicked, this, &KeyBoard::key_2Pressed);connect(this->ui->P_key3, &QPushButton::clicked, this, &KeyBoard::key_3Pressed);connect(this->ui->P_key4, &QPushButton::clicked, this, &KeyBoard::key_4Pressed);connect(this->ui->P_key5, &QPushButton::clicked, this, &KeyBoard::key_5Pressed);connect(this->ui->P_key6, &QPushButton::clicked, this, &KeyBoard::key_6Pressed);connect(this->ui->P_key7, &QPushButton::clicked, this, &KeyBoard::key_7Pressed);connect(this->ui->P_key8, &QPushButton::clicked, this, &KeyBoard::key_8Pressed);connect(this->ui->P_key9, &QPushButton::clicked, this, &KeyBoard::key_9Pressed);connect(this->ui->P_dot, &QPushButton::clicked, this, &KeyBoard::key_DotPressed);connect(this->ui->P_back, &QPushButton::clicked, this, &KeyBoard::key_BackPressed);connect(this->ui->P_sure, &QPushButton::clicked, this, &KeyBoard::key_EnterPressed); }KeyBoard::~KeyBoard() {delete ui; }void KeyBoard::key_0Pressed() {this->ui->P_key0->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "0");this->ui->P_key0->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}");}void KeyBoard::setLineEditObj(QLineEdit* lineEdit) {this->edit = lineEdit; }void KeyBoard::key_1Pressed() {this->ui->P_key1->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "1");this->ui->P_key1->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_2Pressed() {this->ui->P_key2->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "2");this->ui->P_key2->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_3Pressed() {this->ui->P_key3->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "3");this->ui->P_key3->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_4Pressed() {this->ui->P_key4->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "4");this->ui->P_key4->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_5Pressed() {this->ui->P_key5->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "5");this->ui->P_key5->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_6Pressed() {this->ui->P_key6->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "6");this->ui->P_key6->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_7Pressed() {this->ui->P_key7->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "7");this->ui->P_key7->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_8Pressed() {this->ui->P_key8->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "8");this->ui->P_key8->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_9Pressed() {this->ui->P_key9->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + "9");this->ui->P_key9->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_DotPressed() {this->ui->P_dot->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text() + ".");this->ui->P_dot->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}"); }void KeyBoard::key_BackPressed() {this->ui->P_back->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 10pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->ui->D_lineEdit->setText(this->ui->D_lineEdit->text().left(this->ui->D_lineEdit->text().length() - 1 > 0 ? this->ui->D_lineEdit->text().length() - 1 : 0));this->ui->P_back->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 75 15pt Arial;}");}void KeyBoard::key_EnterPressed() {this->ui->P_sure->setStyleSheet("QPushButton{border-image: url(:/tubiao/14.png);color: rgb(255, 255, 255);font: 75 15pt Arial;}");//使用等待效果,讓圖標變換有顯示QTime dieTime= QTime::currentTime().addMSecs(300);while (QTime::currentTime() < dieTime)QCoreApplication::processEvents(QEventLoop::AllEvents, 100);this->edit->setText(this->ui->D_lineEdit->text());this->ui->D_lineEdit->clear();//this->edit = nullptr;this->close();this->ui->P_sure->setStyleSheet("QPushButton{border-image: url(:/tubiao/10.png);color: rgb(255, 255, 255);font: 10pt Arial;}");}

keyboard.ui

??ui文件代碼沒用,直接用圖形化的方式生成的,把整體效果,和空間命名貼出來了:
??整體效果圖如下:

??控件命名結構如下:

總結

以上是生活随笔為你收集整理的QT5_虚拟键盘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。