2012-01-03 20 views
2

我是學生,程序員,我想用一些Qt中提供的控件來控制我的用戶輸入。我想讓錯誤消息顯示用戶輸入的確切錯誤,所以我認爲使用switch語句是最好的。我對此可能不太正確,如果有更好的方法來做到這一點,我全都是耳朵!我的主要項目將獲得用戶輸入的分配,感覺應該有一個更簡單的方法。 Qt文檔使我相信QValidator的核心是枚舉數據類型。所以我雖然可以在switch語句中使用它,但它似乎並不是int。我不確定如何在不影響QValidator的預期便利的情況下提供一個int值來使其工作。QErrorMessage和QValidator

如何使這項工作或做不好任何信息將不勝感激。提前致謝。

#include "mainwindow.h" 
#include "ui_mainwindow.h" 
#include <QValidator> 
#include <QErrorMessage> 
#include <QString> 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    connect(ui->pushButtonValidate, SIGNAL(clicked()), this, SLOT(checkData())); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::checkData() 
{ 
    QValidator *doubleValidator = new QDoubleValidator(); 
    switch(ui->lineEditValidate->setValidator(doubleValidator)) 
    { 
    case 0: 
     QErrorMessage *error0 = new QErrorMessage(this); 
     error0->showMessage("The input is invalid"); 
     break; 
    case 1: 
     QErrorMessage *error1 = new QErrorMessage(this); 
     error1->showMessage("The input is incomplete"); 
     break; 
    case 2: 
     break; 
    default: 
     QErrorMessage *error = new QErrorMessage(this); 
     error->showMessage("No input"); 
    } 
} 

回答

2

在這行代碼

switch(ui->lineEditValidate->setValidator(doubleValidator)) 

你試圖在setValidator()函數調用,它返回void的返回值進行切換。

從我所收集,它看起來像你想要做的東西沿着這些路線:

在構造函數中:

ui->setupUi(this); 
connect(ui->pushButtonValidate, SIGNAL(clicked()), this, SLOT(checkData())); 
QValidator *doubleValidator = new QDoubleValidator(); 
ui->lineEditValidate->setValidator(doubleValidator); 

checkData()

int pos = 0; 
switch(ui->lineEditValidate->validator()->validate(ui->lineEditValidate->text(), pos)) 
{ 
case QValidator::Invalid: 
... 
case QValidator::Incomplete: 
... 
case QValidator::Invalid: 
... 
} 
+0

我認爲你有挑釁讓我在這裏正確的軌道,但我得到一個交換機的編譯器問題: 沒有匹配函數調用QValidator :: validate(QString)const 候選人是: 虛擬QValidator ::國家QValidator ::驗證(QString的&,INT和)常量 它說,候選人需要兩個參數,並只設置一個。 我正在看這個,文件不清楚應該去這裏。有任何想法嗎?我不知道在驗證參數中還需要什麼。我在想父母或這個,但都不會在這個功能中工作。我得到相同的編譯錯誤。 – 2012-01-03 22:40:44

+0

我編輯的聲明是更正確的。你真的需要學會依靠閱讀[Qt文檔](http://developer.qt.nokia.com/doc/qt-4.8/)來了解這些事情,才能真正理解發生了什麼 – Chris 2012-01-03 23:00:26

+0

謝謝;你的權利,QT文件是我一直在努力的。它是一個艱難的進軍,但生病到達那裏。謝謝你的幫助! – 2012-01-04 00:04:53

相關問題