Juce. Как создать модель для TableListBox?

235
30 ноября 2017, 02:53

Есть

    #ifndef _TListBoxModel_h_
#define _TListBoxModel_h_
//--------------------------------------------------------
#include "../JuceLibraryCode/JuceHeader.h"
//--------------------------------------------------------
class TListBoxModel : public TableListBoxModel
{
public:
    TListBoxModel();
    ~TListBoxModel();
    // Задаём число элементов списка
    int getNumRows();
    // Отрисовка элемента списка
    void paintListBoxItem(int, Graphics&, int, int, bool);
    // Обработка щелчка и двойного щелчка мышью по элементу
    void listBoxItemClicked(int, const MouseEvent&);
    void listBoxItemDoubleClicked(int, const MouseEvent&);
    // Обработка щелчка мышью по свободному пространству списка
    int backgroundClicked();
    // Собственные функции добавления и удаления элемента списка
    void AddItem(String);
    void DeleteItem(int);
private:
    // Массив для хранения строк списка
    Array<String> sItems;
    // Предотвращает создание копии конструктора и оператора =
    TListBoxModel(const TListBoxModel&);
    const TListBoxModel& operator= (const TListBoxModel&);
};
//---------------------------------------------------------
#endif

Есть реализация класса

#include "TListBoxModel.h"
//--------------------------------------------------------
#define tr(s) String::fromUTF8(s)
//-------------------------------------------------------
TListBoxModel::TListBoxModel()
{
}
//-------------------------------------------------------
TListBoxModel::~TListBoxModel()
{
    // Перед завершенням роботи видаляємо збережені рядка списку
    sItems.clear();
}
//-------------------------------------------------------
int TListBoxModel::getNumRows()
{
    // Число елементів списку - число збережених рядків
        return sItems.size();
}
//-----------------------------------------------------
void TListBoxModel::paintListBoxItem(int iRowNumber, Graphics& Painter, int iWidth, int iHeight, bool bIsRowSelected)
{
    // Якщо рядок обрана, зафарбовуємо її блакитним кольором
        if (bIsRowSelected)
        {
            Painter.fillAll(Colours::lightblue);
        }
    // Колір напису - чорний
        Painter.setColour(Colours::black);
    // Розмір шрифту - 75 % від висоти рядка
        Painter.setFont(iHeight * 0.7f);
    // Малюємо текст рядки із заданими параметрами, виходячи з її номера
        Painter.drawText(sItems[iRowNumber],
            5, 0, iWidth, iHeight,
            Justification::centredLeft, true);
}
 // ------------------------------------------------ ------
void TListBoxModel::listBoxItemClicked(int iRowNumber,
    const MouseEvent & Event)
{
}
// ------------------------------------------------ ------
void TListBoxModel::listBoxItemDoubleClicked(int iRowNumber,
    const MouseEvent & Event)
{
    // Якщо користувач двічі клацнув по елементу списку
        // Виводимо текст відповідного рядка
        String sMessage = tr("Вибрано елемент \" ");
    sMessage += sItems[iRowNumber];
    sMessage += "\" ";
    AlertWindow::showMessageBox(AlertWindow::InfoIcon,
        tr("Інформація"), sMessage,
        tr("Так"), 0);
}
// ------------------------------------------------ ------
int TListBoxModel::backgroundClicked()
{
    return 0;
}
// ------------------------------------------------ ---- -
void TListBoxModel::AddItem(String sText)
{
    // Додаємо новий елемент в масив рядків
        sItems.add(sText);
}
// ------------------------------------------------ ------ -
void TListBoxModel::DeleteItem(int iItem)
{
    // Видаляємо елемент з масиву рядків
        sItems.remove(iItem);
}
// ------------------------------------------------ ------ -

Пытаемся создать таблицу при постройке окна.

tableModel = new TListBoxModel();
addAndMakeVisible(table = new TableListBox());
table->getHeader().addColumn("City", 1, 100);
table->getHeader().addColumn("Population", 1, 100);
table->setModel(tableModel);

tablemodel определено как

TListBoxModel * tableModel;

argument of type "TListBoxModel *" is incompatible with parameter of type "juce::TableListBoxModel *" first_App f:\juce\first\Source\Form1t.cpp 58

Вторую ночь не могу заснуть  и пытаюсь решить проблему

с обычным ListBox проблем нет таких.

READ ALSO
C++ Ehlib - Не работает UPDATE у ADODataDriverEh

C++ Ehlib - Не работает UPDATE у ADODataDriverEh

Здравствуйте Возникла проблема с ADODataDriverEh Имеется стандартная цепочка: ADOConnectionProviderEh - ADODataDriverEh - MemTableEh - DataSource - DBGridEh (с DBNavigator)

227
Qt сохранения в JSON файл

Qt сохранения в JSON файл

Мое приложение показывает карту и позволяет прокладывать путьПосле нажатия на карту, мы видим иконку первого Waypoint

293
Работа с памятью в С++(Qt)

Работа с памятью в С++(Qt)

Здравствуйте, пишу приложение на С++(Qt), которое работает с БД и в процессе всей моей работы у меня возник вопрос в каких ситуациях, когда и где...

229