2015-04-21 30 views
-1

您好,我需要幫助關閉在組合框中雙擊自動滾屏,我已經寫了一些代碼,但我得到的錯誤,有人可以幫我Qt的需要幫助的組合框禁用滾動

list << ui->comboBox << ui->comboBox_2 << ui->comboBox_3; 
for(i =0 ; i<list.count();i++) 
{ 
    list[i]->installEventFilter(this); 
    list[i]->setFocusPolicy(Qt::StrongFocus); 
} 


bool MainWindow::eventFilter(QObject * o,QEvent * e) 
{ 
    if(e->type() == QEvent::Wheel && o == list.at(i)) 
    { 
     return true; 
    } 
    return false; 
} 

當我運行程序我得到這個錯誤

中的QList

ASSERT失敗::在:「索引超出範圍」

+0

請提供一個SSCCE。 –

+0

我不確定這裏到底發生了什麼,但是在'o == list.at(i)'''''''''''''''''''''''''不要設置'i',它可能與前面的代碼中的'list.count() 。如上所述,請提供[小型,自包含的可編譯示例](http://sscce.org/)。 –

回答

-1

開始在調試模式下看到是錯誤。 (i)

+0

II在QList :: at:「索引超出範圍」,文件.. \ .. \ QtSDK \ Desktop \ Qt \ 4.7.4 \ mingw \ include/QtCore/qlist中得到了相同的錯誤ASSERT失敗。 h,第456行 傳遞給C運行時函數的參數無效。 傳遞給C運行時函數的參數無效。 – Marko

+0

當然,你會得到。你可以使用'.at()'方法而不是'operator []',你會得到異常而不是assert。您只需使用不存在索引的'operator []'。在調試模式下,你可以找到你做的地方。 – gomons

+0

程序開始,但是當我嘗試更改組合框索引時,我得到錯誤 – Marko