2016-11-18 2 views
-1

CPP файл:C++ строка декларации и Qt вопрос

#include "currency.hpp" 
currencyNames[4] = {"gbp","usd","eur","aud"}; 

QComboBox *box1 = new QComboBox(); 
int i; 
for(i=0; i < 4; i++){ 
    QString *s = QString::string(currencyNames[i]); 
    box1->addItem(s); 
} 

HPP файл:

#pragma once 
#include string 

. 
. 
. 

static const int SIZE = 4; 
std::string currencyNames[SIZE]; 

я получаю много ошибок, я хочу массив, содержащий информацию выше, то цикл по массиву добавив его в QComboBox. Не имеет успеха. Включены все соответствующие заголовки Qt.

+3

Две очевидные проблемы: это не то, как вы инициализируете массив; И вы не можете иметь общие инструкции вне функций. Возможно, вам нужно [прочитать книгу для начинающих] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? –

+1

Дополнительные ошибки: Нет 'QString :: string', но' QString :: fromStdString'. Он не возвращает указатель, но объект 'QString' –

+1

Проголосовало за Close как" too wide ". Проблема в том, что вы новичок в C++ и слишком много писали код. В результате у вас есть несколько синтаксических ошибок в вашем коде, и они начинают перекрываться. В этот момент у компилятора возникают реальные проблемы с угадыванием того, что вы могли иметь в виду. Если вы попробовали более минимальный пример, вы бы знали, что строка 'currencyNames [4] =' вне функции была неправильной и исправлена, прежде чем пытаться ее использовать. – MSalters

ответ

0

Помимо проблем, уже упомянутых в предыдущих комментариях, QComboBox :: метод addItem ссылается на QString, а не на указатель.

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

QStringList currencyNames{"gbp","usd","eur","aud"}; 
QComboBox *box = new QComboBox(); 
box->addItems(currencyNames); 

Только не забудьте присвоить поле в какой-то из родителей, чтобы сделать его обрабатывать разрушения коробки, когда это необходимо.

Смежные вопросы