2013-10-14 4 views
1

Я новичок в программировании и использовании qt для создания собственного графического интерфейса. Я пытаюсь сделать панель поиска одним из моих списков, но он продолжает говорить, что для вызова нет соответствующей функции ... Это может быть действительно глупый вопрос. Вот мой код.Qt Creator и Qstring

void Widget::on_SearchBar_textChanged(const QString &arg1) 
{ 

    QString Input; 
    ui->Online->find(Input); 
} 

и ошибка

C:\Qt\Qt5.1.1\Tools\QtCreator\bin\CryptoCourier\widget.cpp:21: error: no matching function for call to 'QListWidget::find(QString&)'

ui->Online->find(Input); 

вот остальная часть моего кода в соответствии с просьбой

Ok Так вот остальная часть моего кода. Не так много, но здесь.

#include "widget.h" 
#include "ui_CryptoCC.h" 
#include <QString> 

Widget::Widget(QWidget *parent) : 
    QWidget(parent), 
    ui(new Ui::Widget) 
{ 
    ui->setupUi(this); 
} 

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

void Widget::on_SearchBar_textChanged(const QString &arg1) 
{ 
    #include <string> 
    QString Input; 
    ui->Online->find(Input); 
} 
        ^
+3

Вы вызываете метод 'find' вашего экземпляра QListWidget' Online'. Этот метод описан здесь: http://qt-project.org/doc/qt-5.0/qtwidgets/qwidget.html#find. Он не имеет никакого отношения к поиску, а скорее сопоставляет собственный виджет, обращается к QWidgets (и он не принимает аргумент QString). Может быть, включает небольшой макет UI того, что вы пытаетесь выполнить, и тогда люди смогут получить большую помощь. – ksimons

+2

Совет: вы не можете писать программы, складывая случайные вещи; сначала изучите язык, затем некоторые основы структуры Qt и всегда читайте документацию о методах, которые вы не знаете. –

+1

О да. Я забыл это сделать. Я это исправил. – noahdotgansallo

ответ

3

У вас есть две основных проблемы:

  • #include заявление должно идти за пределы функций, так как они буквально включают весь файл именно там, где вы их.
  • Для QString файл, который вы хотите включить, вероятно, называется «QString».

попробовать что-то вроде этого:

#include <QString> 

/* the rest of your code, which you didn't include in your example */ 

void Widget::on_SearchBar_textChanged(const QString &arg1) 
{ 
    /* by the way, you're calling Online->find() with an empty string, 
    * did you mean to use `arg1` here? */ 
    QString Input; 
    ui->Online->find(Input); 
} 

Кроме того, я должен был бы знать, что ui и ui->Online являются, прежде чем я мог бы дать вам совет о том, какие функции вы можете позвонить на них.

+1

Я переписал полный код – noahdotgansallo

+1

Должен ли я включать пользовательский интерфейс? Это очень долго ... – noahdotgansallo