中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

wordpress商城建站教程創(chuàng)建網(wǎng)站要錢嗎

wordpress商城建站教程,創(chuàng)建網(wǎng)站要錢嗎,手機做網(wǎng)站哪家好,怎么看網(wǎng)站開發(fā)的好壞目錄 1、前言 2、界面設(shè)計 3、英文、數(shù)字的輸入 4、符號的輸入 5、中文的輸入 6、中文拼音庫的選擇 7、其他 8、結(jié)語 1、前言 使用QT C在帶顯示器的Linux系統(tǒng) 開發(fā)板上(樹莓派等)編寫操作UI界面時,很多時候都需要一個軟鍵盤來輸入文字…

目錄

1、前言

2、界面設(shè)計

3、英文、數(shù)字的輸入

4、符號的輸入

5、中文的輸入

6、中文拼音庫的選擇

7、其他

8、結(jié)語

1、前言

????????使用QT C++在帶顯示器的Linux系統(tǒng)?開發(fā)板上(樹莓派等)編寫操作UI界面時,很多時候都需要一個軟鍵盤來輸入文字、符號等(在Windows系統(tǒng)只有少數(shù)時候需要用軟鍵盤)。這個時候使用QT自帶的軟鍵盤就可能會出現(xiàn)很多顯示問題,大小不適、顯示文本亂碼等等。

    //QT自帶的軟鍵盤激活QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);//設(shè)置為默認鍵盤qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

? ? ? ? 當然,這個時候還可以查看你使用的liunx系統(tǒng)是否自帶軟鍵盤,你可以啟動這個自帶的,但是很多情況下還是會出現(xiàn)上面的問題:顯示亂碼、大小不適。

? ? ? ? 最后,我們最佳方案就是自己動手編寫一個軟鍵盤,或者在網(wǎng)絡(luò)上找一個已經(jīng)實現(xiàn)的例程。但是我在網(wǎng)絡(luò)上沒有找到好用的軟鍵盤例程,都有很大得缺陷,所以還是決定自己編寫一個軟鍵盤,這樣也對于所對應(yīng)得項目或者開發(fā)板具有更好兼容性。

2、界面設(shè)計

? ? ? ? 這里建議先在能使用Qt?Creator的系統(tǒng)上做好鍵盤得UI界面,因為在這個官方得編輯編譯器中,有對應(yīng)得UI設(shè)計工具界面,這個界面能夠快速的做出你需要的界面的模樣,并自動生成.ui文件。界面樣式就按照手機輸入法做一個大概的樣子就行了,例如我的:

這里的選詞我使用的label,然后結(jié)合link標簽使用,點擊時就可以取出對應(yīng)的文字了,你也可以使用pushbutton來替代,只要最后能達到目的就行。

3、英文、數(shù)字的輸入

? ? ? ? 英文、數(shù)字以及符號的輸入很簡單,使用pushbutton,在對應(yīng)的按鈕上添加對應(yīng)的文本,點擊該按鈕時獲取該文本即可進行對應(yīng)的輸入操作,這里按鈕很多建議使用Qt中的按鈕組類(QButtonGroup)來管理按鈕,我使用了兩個按鈕組來管理對應(yīng)的輸入操作:

    QButtonGroup *bigKey26; //26鍵QButtonGroup *numberKey; //數(shù)字鍵bigKey26 = new QButtonGroup(this);//26鍵按鈕組初始化connect(bigKey26,SIGNAL(buttonClicked(int)),this,SLOT(bigKey26Slot(int)));for (int var = 1; var <= 26; ++var) {QPushButton *pushButton = this->findChild<QPushButton *>("bigKeyboardBtn_" + QString::number(var));if(pushButton != nullptr){bigKey26->addButton(pushButton,var);}}numberKey = new QButtonGroup(this);//數(shù)字鍵按鈕組初始化connect(numberKey,SIGNAL(buttonClicked(int)),this,SLOT(numberKeySlot(int)));for (int var = 0; var <= 9; ++var) {QPushButton *pushButton = this->findChild<QPushButton *>("numberKekboard_" + QString::number(var));if(pushButton != nullptr){numberKey->addButton(pushButton,var);}}//26鍵功能函數(shù),這里有英文,也有中文
void KeyBoardWidget::bigKey26Slot(int id)
{QString curBtnText = this->findChild<QPushButton *>("bigKeyboardBtn_" + QString::number(id))->text();if(bigKeyLanguagesFlag == 0){/** ********** 英 ***********/if(bigKey26UpAndDownFlag == 0){//小curBtnText = curBtnText.toLower();}else if(bigKey26UpAndDownFlag == 1){//大curBtnText = curBtnText.toUpper();}
//        this->addTextContentOfLabel(ui->label, "ret1-label", curBtnText);this->curFocusWidgetInsertText(curBtnText); //在當前焦點控件光標處添加文本}else if(bigKeyLanguagesFlag == 1){/** ********** 中 ***********/curBtnText = curBtnText.toLower();ui->label_9->setText(ui->label_9->text() + curBtnText);//        dictRetList = QStringList{"結(jié)果1", "結(jié)果2", "結(jié)果3", "結(jié)果4", "結(jié)果5", "結(jié)果6", "結(jié)果7", "結(jié)果8", "結(jié)果9", "結(jié)果10", "結(jié)果11", "結(jié)果12"};dictRetList = pinyinToHanzi(ui->label_9->text());this->showDictRetListToLabel(1);}
}//數(shù)字鍵的功能函數(shù)
void KeyBoardWidget::numberKeySlot(int id)
{QString curBtnText = this->findChild<QPushButton *>("numberKekboard_" + QString::number(id))->text();this->curFocusWidgetInsertText(curBtnText);//在當前焦點控件光標處添加文本
}

4、符號的輸入

????????符號按鍵的功能比較簡單,我使用的是多個信號連接一個槽的機制來管理,區(qū)分按鈕的方式是使用sender()來獲取當前發(fā)送信號的按鍵。這里需要注意的是特殊符號&需要使用&&來轉(zhuǎn)義顯示,否則對應(yīng)的按鈕上不會顯示,故在處理時需要判斷一下。

connect(ui->numberKekboardPoint, &QPushButton::clicked, this, &KeyBoardWidget::on_symbolBtn_clicked);for (int var = 1; var <= 40; ++var) {QPushButton *curSymbolBtn = this->findChild<QPushButton *>("symbolBtn_" + QString::number(var));if(curSymbolBtn != nullptr){connect(curSymbolBtn, &QPushButton::clicked, this, &KeyBoardWidget::on_symbolBtn_clicked);}}void KeyBoardWidget::on_symbolBtn_clicked()
{QPushButton *curSymbolBtn = qobject_cast<QPushButton *>(sender());if(curSymbolBtn != nullptr){QString curSymbolStr = curSymbolBtn->text();if(curSymbolStr.isEmpty()){return;}if(curSymbolStr == "&&"){curSymbolStr = "&";}this->curFocusWidgetInsertText(curSymbolStr);}
}

5、中文的輸入

? ? ? ? 在軟鍵盤的編寫中,這個是最費時間的,也不是說多難,難的是找到一個可使用的開源的中文拼音庫,很難找找了好幾天才找到。找到拼音庫后,移植到自己的代碼中進行拼音的輸入,這里我用了一個label來顯示中文的拼音,然后從這里獲取,如上在英文的輸入中已有獲取方式。

    if(bigKeyLanguagesFlag == 1){/** ********** 中 ***********/curBtnText = curBtnText.toLower();ui->label_9->setText(ui->label_9->text() + curBtnText);//        dictRetList = QStringList{"結(jié)果1", "結(jié)果2", "結(jié)果3", "結(jié)果4", "結(jié)果5", "結(jié)果6", "結(jié)果7", "結(jié)果8", "結(jié)果9", "結(jié)果10", "結(jié)果11", "結(jié)果12"};dictRetList = pinyinToHanzi(ui->label_9->text());this->showDictRetListToLabel(1);}

這里我已經(jīng)將拼音庫的使用封裝為函數(shù)pinyinToHanzi(),傳入拼音即可返回對應(yīng)的漢字列表。獲取到漢字列表后,使用showDictRetListToLabel()函數(shù)來更新顯示,這個函數(shù)將列表以5為單位分頁,傳入的數(shù)字即顯示的頁碼。前面說過,我的結(jié)果顯示在label中的,所以使用link事件來獲取對應(yīng)的文字和事件,設(shè)置鏈接函數(shù)如下:

void KeyBoardWidget::setTextContentOfLabel(QLabel *label, QString linkStr, QString text)
{label->setText(QString("<a href = '%1' style=\"text-decoration: none;\" style=\"color: white;\">%2</a>").arg(linkStr).arg(text));
}

6、中文拼音庫的選擇

? ? ? ? 這里可以選擇libpinyin或者googlepinyin,前者在Linux系統(tǒng)上使用很方便,直接使用apt下載即可,后者需要下載源碼自行進行引用。注意的是libpinyin在Windows系統(tǒng)上使用起來很麻煩,建議使用googlepinyin。

libpinyin下載方式:

Ubuntu/Debian:
sudo apt-get install libpinyin-dev
Fedora:
sudo dnf install libpinyin-devel源碼下載:https://github.com/libpinyin/libpinyin

googlepinyin下載:

https://github.com/aron566/google_pinyinim

下載完成后,他們在github中都有使用示例?,照著用就可以,不需要額外的什么,但是要注意詞庫的路徑要正確。

7、其他

再補充幾個關(guān)鍵點:

//防止當前窗口獲取焦點,導(dǎo)致輸入控件丟失
this->setWindowFlags(this->windowFlags() | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool | Qt::WindowDoesNotAcceptFocus);
//獲取當前焦點在哪個控件
curFocusWidget = QApplication::focusWidget();
//判斷焦點控件是否是QLineEdit 類型
if (QLineEdit *lineEdit = qobject_cast<QLineEdit *>(curFocusWidget)) {curText = lineEdit->text();
} 
//清除當前焦點,關(guān)閉鍵盤的時候會用到
if(curFocusWidget != nullptr){curFocusWidget->setFocusPolicy(Qt::ClickFocus);curFocusWidget->clearFocus();curFocusWidget = nullptr;
}
//多l(xiāng)abel鏈接一個link事件槽
connect(curlabel, &QLabel::linkActivated, this, &KeyBoardWidget::on_label_1_linkActivated);
//使用libpinyin獲取的結(jié)果格式const char *word
retList.append(QString(word));
//使用googlepinyin獲取的結(jié)果格式ime_pinyin::char16 buf[256]
retList.append(QString::fromUtf16(buf));

8、結(jié)語

? ? ? ? 關(guān)于其他的布局或功能實現(xiàn)、結(jié)果獲取后放入目標控件等等,就不過多贅述了,還有問題請留言,最后放一張我的效果圖片:

http://www.risenshineclean.com/news/3034.html

相關(guān)文章:

  • 永久免費自助建站朋友圈廣告投放價格表
  • 織夢網(wǎng)站首頁打開慢鄭州企業(yè)網(wǎng)絡(luò)推廣外包
  • 做網(wǎng)站做的好的公司有哪些免費網(wǎng)站排名優(yōu)化軟件
  • 甘肅做網(wǎng)站哪家專業(yè)推廣計劃方案模板
  • 深圳 電子商務(wù)網(wǎng)站開發(fā)在線智能識圖
  • wordpress圖片批量上傳插件下載游戲優(yōu)化大師
  • 請人幫忙做網(wǎng)站推廣seo自學(xué)網(wǎng)官網(wǎng)
  • 建設(shè)工程網(wǎng)教育網(wǎng)官網(wǎng)河南鄭州網(wǎng)站推廣優(yōu)化外包
  • 幼兒園主題設(shè)計網(wǎng)絡(luò)圖seo關(guān)鍵詞分析
  • 做網(wǎng)站選什么主機手機優(yōu)化器
  • 茂名網(wǎng)站建設(shè)服務(wù)培訓(xùn)心得體會500字
  • 松江集團網(wǎng)站建設(shè)外鏈相冊
  • 2017政府網(wǎng)站設(shè)計方案百度一下你就知道官方
  • 自己怎么做團購網(wǎng)站優(yōu)化步驟
  • 杭州的互聯(lián)網(wǎng)企業(yè)有哪些seo客服
  • 河南省建筑市場一體化平臺鄭州搜索引擎優(yōu)化公司
  • 樂清新聞今日頭條百度快速seo軟件
  • 東莞市公司網(wǎng)站建設(shè)平臺seo顧問推推蛙
  • 多語言建站系統(tǒng)網(wǎng)絡(luò)營銷技巧培訓(xùn)班
  • 河北網(wǎng)站開發(fā)北京seo如何排名
  • 怎么做電影網(wǎng)站不違法怎么做好seo推廣
  • 手機網(wǎng)站菜單設(shè)計模板互聯(lián)網(wǎng)營銷師
  • 網(wǎng)站建設(shè)的目標打開百度搜索引擎
  • 廣州建設(shè)網(wǎng)站公司企業(yè)線上培訓(xùn)平臺
  • 個人網(wǎng)站的設(shè)計論文廣西seo經(jīng)理
  • 畢業(yè)設(shè)計做視頻網(wǎng)站產(chǎn)品怎么進行推廣
  • 寧波網(wǎng)站營銷推廣制作百度廣告聯(lián)盟收益
  • 工信部企業(yè)網(wǎng)站認證公關(guān)公司排名
  • 網(wǎng)站域名更換是怎么做的搭建網(wǎng)站需要哪些步驟
  • 做滾動圖的免費網(wǎng)站百度競價返點開戶