Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > переменные


Автор: Dia28 19.10.2011, 22:58
Здравствуйте начала изучать только...
 создаю два поля два переменных n и к. как сделать так чтобы они вводились , с ними можно было работать и условие ставить n>200 и n<0...то вышло окошко или предупреждение...? а если выполняется чтобы другое действие было? подскажи пожалуйста
Код



#include <QtGui/QApplication>
#include "mainwindow.h"
 #include <QtGui>
 #include <QFormLayout>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget window;
    window.resize(200,200);
    window.show();
    window.setWindowTitle(
    QApplication::translate("1234","Zadaxa"));


    QLabel *n = new QLabel(QApplication::translate("", " n:"));
    QLineEdit *n1 = new QLineEdit();
    QLabel *k = new QLabel(QApplication::translate("", "k:"));
    QLineEdit *k1 = new QLineEdit();

        QFormLayout *layout = new QFormLayout();
        layout->addWidget(n);
        layout->addWidget(n1);
        layout->addWidget(k);
        layout->addWidget(k1);
        window.setLayout(layout);
         window.show();


    return app.exec();
}


Автор: null56 20.10.2011, 00:57
Я не делал такое, но действовал бы вот так: 
1) унаследовался от класса QLineEdit
2) определил бы у него виртуальный метод (ы)
Код

void QLineEdit::keyPressEvent ( QKeyEvent * event ) [virtual protected]
void QLineEdit::changeEvent ( QEvent * ev ) [virtual protected]

3) в обработчике этого события я бы анализировал содержимое строки и нажатую клавишу и далее действовал от твоих условий
почитай подробнее про эти методы, может это как раз то, что тебе нужно

Автор: math64 20.10.2011, 08:12
Нужно делать не класс производный от QLineEdit, а от QValidator, примерно так;
Код

class Validator : public QValidator {
public:
  Validator(QObject* parent=0) : QValitator(parent) {}
  virtual State validate ( QString & input, int & pos ) const {
    bool ok;
    int value = input.toInt(&ok);
    if (ok && value >= min && value <= max)
      return Acceptable;
    else
      return Invalid;
  }
};


Добавлено через 6 минут и 40 секунд
Кстати, производный класс делать не надо - он уже есть, QIntValidator.

Автор: null56 20.10.2011, 11:59
math64, да, точно, такая тема была такая вещь, позже можно ее скормить объекту QLineEdit методом
Код

setValidator ( const QValidator * )

тролли всё продумали   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)