2016-10-26 6 views
0

Ich suchte (eine unglaubliche Menge an Zeit) durch Qt-Dokumentation und einige andere Dokumentation online, aber ich kann keine Antwort bekommen.Wie verwende ich QRegularExpression in Qt

Ich verwende einen QLineEdit, der einen "C++ Klassennamen" (das heißt, es sollte nur akzeptieren [AB] (< -Uppercase als auch), [0-9] und Unterstrich (_). Egal wie (blind) ich versuche es einzurichten, funktioniert es nicht.

1 m_classDefLayout->addRow("Class Name",m_className); 
2 m_className->setValidator(m_nameValidator); 
3 m_nameValidator->setRegularExpression(*m_nameRegExp); 
4 //m_namePattern=(); 
5 m_nameRegExp->setPattern(m_namePattern); 

Was ich in den Klammern der Linie einfügen 4? ich frage nicht für Code zu kopieren und einzufügen. Einige Beispiele (selbst eine gut erklärt) kann mir helfen, also werde ich endlich mein Projekt beenden.

+0

Sie sollten Datentypen jedes Mitglieds zeigen .. – hyun

Antwort

2

Da ich den Datentyp in Ihrem Code nicht kenne, schreibe ich einfach einen einfachen Beispielcode.

QRegularExpression rx("^[A-Za-z_][A-za-z0-9]*"); 
QValidator *validator = new QRegularExpressionValidator(rx, this); 

ui.lineEdit->setValidator(validator); 

Wenn Sie unten stehenden Link lesen, werden Sie genau verstanden werden.

link for ^(caret)

link for *(asterisk)

+0

'm_className ist ein QLineEdit' 'm_nameValidator ist mein QRegularExpressionValidator' 'm_nameRegExp ist mein QRegularExpression' ‚m_namePattern ist ein QString ' ' Und danke für deine Antwort. ' Ich nehme an, dass die Klammern nach dem "^" für den Anfang der Eingabe und die letzten für das Ende sind. Liege ich falsch? –

+0

@NhatzHK, ich habe meine Antwort bearbeitet. "ist für den Anfang" ist richtig, aber * ist nicht für den letzten. $ ist für die letzte. – hyun

+0

vielen dank;) –

Verwandte Themen