Qt
tabanlı bir uygulamada bir konsol giriş var, bu bir QLineEdit
, tüm Ui QtDesigner
aracılığıyla tasarlanmıştır. Giriş tarihini uygulamak için yukarı ve aşağı okları işlemenin kolay yolu nedir? Sadece, ben yukarı işlemek için görebileceğiniz hiçbir şekilde returnProcessed
sinyalini göstermek ve oklar :(QLineEdit: yukarı ve aşağı okları nasıl tutmalı?
cevap
Eğer install event filter can ve pencere sınıfında satır düzenleme olayı izlemek Aşağıda bir örnek:.
class MainWindow : public QMainWindow {
Q_OBJECT
...
protected:
void changeEvent(QEvent *e);
...
};
: pencere sınıfı
beyan olay işleyicisi yöntemi
pencere yapıcısı
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
...
ui->lineEdit->installEventFilter(this);
}
olay işleyicisi uygulaması: Bu yardımcı olur
bool MainWindow::eventFilter(QObject* obj, QEvent *event)
{
if (obj == ui->lineEdit)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Up)
{
qDebug() << "lineEdit -> Qt::Key_Up";
return true;
}
else if(keyEvent->key() == Qt::Key_Down)
{
qDebug() << "lineEdit -> Qt::Key_Down";
return true;
}
}
return false;
}
return QMainWindow::eventFilter(obj, event);
}
umut, ben de aynı problem vardı
Sen QLineEdit alt sınıf ve özel tuşlar işlemek için sanal keyPressEvent yöntemini tekrar uygulamasını.
void MyLineEdit::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Up){
// move back in history
}
else if(event->key() == Qt::Key_Down){
// move forward in history
}
else{
// default handler for event
QLineEdit::keyPressEvent(event);
}
}
aşağı 'yarmak git'
Bu iyi bir fikir. Ancak QLineEdit alt sınıflama QtDesigner tarafından üretilen Ui ile birleştirmek nasıl? – grigoryvp
Bakınız: http://doc.trolltech.com/4.6/designer-creating-custom-widgets.html –
Yani, aşağı okları çalıştırmak için çalışırken tanımlayan tonlarca fonksiyonla bir QtDesigner eklentisini uygulamaya koymam gerekiyor "yeni" widget nasıl kullanılır? :( – grigoryvp
ilişkin, ama setFocus
gereken başka forumlarda öğrenmek, örn .:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
...
ui->lineEdit->installEventFilter(this);
this->setFocus();
}
Benim için çalışıyor.
Referans: http://www.qtforum.org/article/28240/how-to-get-arrow-keys.html
- 1. ngDialog'un yukarı ve aşağı kaydırmayı nasıl önleyeceği
- 2. (aşağı yakalama/yukarı ok)
- 3. Anahtar aşağı ve yukarı kaydırma iç dize
- 4. Denetleyicilerin Yukarı ve Aşağı işlevleri nelerdir?
- 5. ipython yukarı ve aşağı ok garip davranışı
- 6. Çizim FBO - sprite yukarı ve aşağı tersi
- 7. Yukarı ve aşağı oku ve yer tutucu metnini nasıl gizleyebilirim?
- 8. Dilimlenmiş "ekran" terminalinde yukarı ve aşağı kaydırma nasıl yapılır
- 9. C# Kod-İlk geçiş, yukarı/aşağı?
- 10. jQuery scrollTop kullanarak ayarlanan piksel miktarını yukarı ve aşağı kaydırırTop
- 11. Animasyonlu Sayfada Kaydırma Yukarı/Aşağı Olay
- 12. WPF'de fare tekerleğinin yukarı ve aşağı kaydırma olayı var
- 13. Skor puanım yukarı ve aşağı devam ediyor. Swift SpriteKit
- 14. jQuery otomatik kaydırma a div Yukarı ve aşağı
- 15. iframe'i yukarı ve aşağı kaydırmak için javascript'i kullanma
- 16. Yukarı ve aşağı üçgenler için HTML varlıkları nelerdir?
- 17. Yukarı ve aşağı ok komutları, Python komut satırı yorumcusunda neden çalışmıyor?
- 18. Bir parçayı yukarı veya aşağı çekmek için nasıl kapatılır?
- 19. Bir kişi QML'de nasıl bir 'yukarı, aşağı' animasyon oluşturur?
- 20. vi komut geçmişine erişirken okları kullanmanın alternatifleri
- 21. JQuery: Slayt etkinliğinin yukarı veya aşağı olup olmadığını nasıl belirleyebilirim?
- 22. Android'de bir liste görünümünün yukarı veya aşağı kayması nasıl algılanır?
- 23. Menubar'a nasıl bir QLineEdit ekleyebilirim
- 24. Aşağı açılır oklar nasıl açılır
- 25. bootstrap navbar daraltmak yerine aşağı yukarı animasyonlu hale getirin
- 26. HTML Kanvas - Eğri okları çiz
- 27. QLineEdit - odak olay
- 28. QLineEdit görünür genişlik Ayarı?
- 29. PHP array_multisort - anahtar değerleri nasıl tutmalı?
- 30. Python/PyQT: QLineEdit
Daha da basitleştirmenin bir yolu, olay filtresini QLineEdit'in kendisine eklemek olabilir. , birkaç QLineEdits uygulamasına uygulayabilirsiniz (olaya tepki verirken obj kullanmanız durumunda) – e8johan
Teşekkürler, bir çekicilik gibi çalışır :) – grigoryvp