Qt中,如何讓QTextEdit不響應(yīng)tab事件?
例如有兩個QTextEdit控件,現(xiàn)在焦點在其中一個控件上,按下tab,既不會切換控件焦點,同時也不會移動4位。最暴力的方法就是繼承QTextEdit,重寫事件
void QWidget::keyPressEvent ( QKeyEvent * event )
{
if(event->key == Qt::Key_Tab)
{
return;
}
else
__supper::keyPressEvent (event);
}
如何讓qtextedit動態(tài)加載內(nèi)容
因為要對一段字符串進行多次處理,為了避免多次刷新UI帶來的負擔(dān),肯定是先將數(shù)據(jù)讀入內(nèi)存,進行處理,然后一次性更新UI。
所以先調(diào)用QTextEdit的toPlainText將文本存入一個QString里。然后就有多種方法了。如果必須考慮行號的話,可以調(diào)用QString的split,將數(shù)據(jù)存入一個QStringList里,這樣就可以得到一個QString的鏈表,每個節(jié)點一行,可以快速定位到任意一行。最后處理完是可以調(diào)用QStringList的join生產(chǎn)一個QString,再調(diào)用QTextEdit的setPlainText存入文本框。
qt中如何向QTextEdit發(fā)送一個鼠標(biāo)滾輪向下滾動一下的事件?
發(fā)送按鍵按下事件可以用以下代碼:rnQKeyEvent key(QEvent::KeyPress,Qt::Key_A,Qt::NoModifier);rnQCoreApplication::sendEvent(TextEdit,&key);rnrn那么發(fā)送滾輪滾動事件是不是應(yīng)該是下面的樣子?rnQWheelEvent wheel(……);rnQCoreApplication::sendEvent(TextEdit,&wheel);rn如果是的話括號里應(yīng)該怎么寫呀?如果不是的話又該怎么實現(xiàn)?rnrn或者可以告訴我如何通過代碼控制QTextEdit使它的內(nèi)容上下滾動(注意不是上下移動光標(biāo))?你的目的是用代碼模擬一個滾輪事件,需要知道此時此刻的滾輪和鍵盤、鼠標(biāo)等狀態(tài),并且填充到參數(shù)列表里面,具體可以參看qt的幫助說明。我這里有個例子,可以模擬滾輪在獲得焦點的控件上發(fā)出一個向下滾輪的事件:
QWidget *current_focus_widget;
current_focus_widget = QApplication::focusWidget();//獲得當(dāng)前焦點的控件
QWheelEvent urWheelEvent(QPoint(current_focus_widget->pos().x(),
current_focus_widget->pos().y()), 8, Qt::NoButton, Qt::NoModifier,
Qt::Vertical);//模擬滾輪,這里要填充比較多的參數(shù)
QCoreApplication::sendEvent(this,&urWheelEvent);
void QTextEdit::wheelEvent(QWheelEvent * e)
?
qt qtextedit 怎樣刪除光標(biāo)前一個字符
下面只是給出一段演示代碼,你需要根據(jù)實際情況進行修改
QTextEdit editer;
editer.setText("abcdef");
//獲取當(dāng)前文本光標(biāo)
QTextCursor cursor = editer.textCursor();
//將光標(biāo)移動到文本結(jié)尾,便于刪除字符測試,實際上并不需要該步驟
cursor.movePosition(QTextCursor::End);
//判斷當(dāng)前是否選中了文本,如果選中了文本則取消選中的文本,再刪除前一個字符
if(cursor.hasSelection())
cursor.clearSelection();
//刪除前一個字符
cursor.deletePreviousChar();
//設(shè)置當(dāng)前的光標(biāo)為更改后的光標(biāo)
editer.setTextCursor(cursor);
editer.show();
鼠標(biāo)點至要刪除的字符后面,然后點Backspace!謝謝!
Qt有接收輸入法字符串的事件么,keyPressEvent行不
this->setAttribute(Qt::WA_KeyCompression, true);
可是用輸入法輸入中文后,keyPressEvent進不去
QLineEdit有textChange 信號,關(guān)聯(lián)這個信號,在槽里面可以接受到字符。
沒有QLineEdit啊
不用打字啊,字符串用作他用
不用控件輸入啊,我只是想獲得輸入的字符串,不過用你的方法,是不是可以搞一個隱藏的QLineEdit讓他獲得焦點,不過左右方向鍵應(yīng)該會有影響吧
又或者我接收到輸入法的字符串,傳遞給其他窗體;
或者做一個打字練習(xí)程序,本來Label里有一些字,打出來的字對比后一樣的話就改變那個字的顏色。。。
打字的過程自己實現(xiàn),你要實現(xiàn)輸入法?為什么不直接用QTextEdit呢,你的要求用QTextEdit好像全部能實現(xiàn)吧,接收輸入法的字符串, QTextEdit有textChage信號,打字練習(xí),你只要拿label上的字和textEdit上字符進行比較,改變下字體顏色,對的用黑色顯示,錯的是紅色顯示,這是可以實現(xiàn)的,你就是想插入圖片,在輸入字,在插入圖片,textEdit多可以實現(xiàn)。
相關(guān)推薦:
最高額保證法律依據(jù)(民法典后保證最高額擔(dān)保的規(guī)定)
中外合資經(jīng)營企業(yè)的資本(中外合資企業(yè)注冊資本金要求)
車輛抵押貸款(汽車抵押貸款需要什么條件)
國有企業(yè)設(shè)立的資料(國有企業(yè)注冊條件)
怎么注冊公司流程(公司注冊流程及需要的材料)