我在Qt文本編輯小部件中編寫引號時遇到問題。我輸入的每個單引號或雙引號都被插入爲一個簡單的引號。但是,我想輸入左右引號(如果可能的話,左下角的開頭和右上角的末尾,這在一些語言中很常見 - 例如斯洛伐克語或捷克語)。QT文本編輯小部件中的引號
我認爲切換到語言的鍵盤佈局會照顧到這一點(如從左到右和從右到左的語言),但這並沒有改變任何東西。我在文檔中沒有發現任何關於這個的東西,這讓我覺得我錯過了一些東西。或不。
你知道有什麼辦法可以用4.7版的Qt(for C++)來實現嗎?
謝謝
我在Qt文本編輯小部件中編寫引號時遇到問題。我輸入的每個單引號或雙引號都被插入爲一個簡單的引號。但是,我想輸入左右引號(如果可能的話,左下角的開頭和右上角的末尾,這在一些語言中很常見 - 例如斯洛伐克語或捷克語)。QT文本編輯小部件中的引號
我認爲切換到語言的鍵盤佈局會照顧到這一點(如從左到右和從右到左的語言),但這並沒有改變任何東西。我在文檔中沒有發現任何關於這個的東西,這讓我覺得我錯過了一些東西。或不。
你知道有什麼辦法可以用4.7版的Qt(for C++)來實現嗎?
謝謝
現在我明白你的問題了。我在這裏看到兩種解決方案:
你可以捕捉"
鑰匙,並將其添加
class editor : public QTextEdit
{
Q_OBJECT
public:
explicit editor();
void keyPressEvent(QKeyEvent *e)
{
if (e->key() == Qt::Key_QuoteDbl)
{
this->insertHtml("“");
this->insertHtml("”");
this->insertHtml("„");
this->insertHtml("“");
}
else
QTextEdit::keyPressEvent(e); // this passes other keys for ordinary processing
}
}
}
背後的一些邏輯,您應該添加一些邏輯控制插入其中引號(也許語言環境和基礎,如果打開引號,是-已插入)。希望幫助
謝謝。我希望自己不需要實施,但從長遠來看,這會給我更多的靈活性。 –
您確定您的鍵盤配置正確嗎?以下是處理彎引號就好了,我(的Windows 7):
#include <QtGui>
class MyLineEdit : public QLineEdit {
Q_OBJECT
public:
explicit MyLineEdit() : QLineEdit(NULL) {
connect(this, SIGNAL(textChanged(QString)), SLOT(on_textChanged(QString)));
}
private slots:
void on_textChanged(const QString &text) {
qDebug() << text;
}
};
int main(int argc, char **argv) {
QApplication app(argc, argv);
MyLineEdit edit;
edit.show();
return app.exec();
}
#include "main.moc"
另一個想法:你確定你正在使用文本編輯插件的字體使用直對彎引號不同的字形?
它不在字體中,因爲複製/粘貼到MS Word中會粘貼直引號。關於鍵盤配置,你有什麼想法可能配置不正確?我正在使用具有默認捷克鍵盤佈局的捷克本地化Windows XP,無需任何修改。 –
我上面的測試應用程序是否適合您?如果您粘貼到記事本中,會得到什麼結果? –
用捷克鍵盤粘貼直的雙引號。 –
也許你使用某種複雜的驗證的?難道其他Unicode字符工作? – friendzis
我不t使用任何驗證器。其他unicode字符工作正常,甚至希伯來語,它會自動開始從右向左鍵入。我已經在linux,windows xp和mac上測試過了,每個地方都有相同的結果。 –