/*
Use Qt version 4.6
*/
#include <QtGui/QApplication>
#include "widget.h"
class SortSlot : public QObject {
Q_OBJECT
public:
QListWidget * List;
public:
SortSlot() {
QObject::QObject();
}
public slots:
void sortit();
};
void SortSlot::sortit() {
this->List->sortItems();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
w.setWindowTitle("List Sort"); // задаём имя окна
QLabel hello; // создаём Label
hello.setText("Press Button to Sort"); // в Label вспомогатльный текст
QListWidget * SortList = new QListWidget; // создаём список
QStringList elements; // создаём набор строк которые будут использоваться как эл-ты списка
elements << "Anton" << "Piter" << "Jon"; // заполняем набор строк
SortList->addItems(elements); // добавляем элементы в список
QPushButton* knopka = new QPushButton("Sort"); // создаём кнопку
SortSlot * s = new SortSlot;
s->List = SortList;
QObject::connect(knopka,SIGNAL(clicked()),s,SLOT(sortit())); // соединяем сигнал со слотом
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(&hello);
layout->addWidget(knopka);
layout->addWidget(SortList);
w.setLayout(layout);
hello.show();
SortList->show();
knopka->show();
return a.exec();
}
Qt слоты + undefined reference
Код:
Вот тут
Код:
SortSlot() {
undefined reference to 'vtable for SortSlot' что с этим делать??? подскажите! вроде всё правильно написано.
Да и как сделать чтобы не так каряво передавать объект List?
Цитата: logree
Задача: есть список, есть кнопка, нужно чтобы по нажатию на кнопку элементы списка сортировались.
Вот тут
undefined reference to 'vtable for SortSlot' что с этим делать??? подскажите! вроде всё правильно написано.
Да и как сделать чтобы не так каряво передавать объект List?
Код:
/*
Use Qt version 4.6
*/
#include <QtGui/QApplication>
#include "widget.h"
class SortSlot : public QObject {
Q_OBJECT
public:
QListWidget * List;
public:
[COLOR="Red"] SortSlot() {
QObject::QObject();
}[/COLOR]
public slots:
void sortit();
};
void SortSlot::sortit() {
this->List->sortItems();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
w.setWindowTitle("List Sort"); // задаём имя окна
QLabel hello; // создаём Label
hello.setText("Press Button to Sort"); // в Label вспомогатльный текст
QListWidget * SortList = new QListWidget; // создаём список
QStringList elements; // создаём набор строк которые будут использоваться как эл-ты списка
elements << "Anton" << "Piter" << "Jon"; // заполняем набор строк
SortList->addItems(elements); // добавляем элементы в список
QPushButton* knopka = new QPushButton("Sort"); // создаём кнопку
SortSlot * s = new SortSlot;
s->List = SortList;
QObject::connect(knopka,SIGNAL(clicked()),s,SLOT(sortit())); // соединяем сигнал со слотом
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(&hello);
layout->addWidget(knopka);
layout->addWidget(SortList);
w.setLayout(layout);
hello.show();
SortList->show();
knopka->show();
return a.exec();
}
Use Qt version 4.6
*/
#include <QtGui/QApplication>
#include "widget.h"
class SortSlot : public QObject {
Q_OBJECT
public:
QListWidget * List;
public:
[COLOR="Red"] SortSlot() {
QObject::QObject();
}[/COLOR]
public slots:
void sortit();
};
void SortSlot::sortit() {
this->List->sortItems();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
w.setWindowTitle("List Sort"); // задаём имя окна
QLabel hello; // создаём Label
hello.setText("Press Button to Sort"); // в Label вспомогатльный текст
QListWidget * SortList = new QListWidget; // создаём список
QStringList elements; // создаём набор строк которые будут использоваться как эл-ты списка
elements << "Anton" << "Piter" << "Jon"; // заполняем набор строк
SortList->addItems(elements); // добавляем элементы в список
QPushButton* knopka = new QPushButton("Sort"); // создаём кнопку
SortSlot * s = new SortSlot;
s->List = SortList;
QObject::connect(knopka,SIGNAL(clicked()),s,SLOT(sortit())); // соединяем сигнал со слотом
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(&hello);
layout->addWidget(knopka);
layout->addWidget(SortList);
w.setLayout(layout);
hello.show();
SortList->show();
knopka->show();
return a.exec();
}
Вот тут
Код:
SortSlot() {
undefined reference to 'vtable for SortSlot' что с этим делать??? подскажите! вроде всё правильно написано.
Да и как сделать чтобы не так каряво передавать объект List?
Что вы сим пытались добиться?
Цитата: logree
Да и как сделать чтобы не так каряво передавать объект List?
Отнаследоваться от QListWidget с добавлением слота например.
Код:
class SortSlot : public QObject {
Цитата:
Отнаследоваться от QListWidget с добавлением слота например.
вот это до меня сразу не дошло сейчас попробую.
вопрос открыт (qmake не помогает)
Код:
SortSlot() {
QObject::QObject();
}
QObject::QObject();
}
Это [COLOR="Red"]не вызов[/COLOR] конструктора QObject.
И вынесите определение класса в отдельный хашник.
Цитата:
Это не вызов конструктора QObject.
И вынесите определение класса в отдельный хашник.
Сегодня 19:49
И вынесите определение класса в отдельный хашник.
Сегодня 19:49
давно не писал на С++ :)
в общем я переписал и всё тоже самое опять эта ошибка
Код:
class MyQListWidget : public QListWidget {
Q_OBJECT
public slots:
void sortAll(); // объявляем слот
};
void MyQListWidget::sortAll() { // определяем слот
this->sortItems(); // вызов метода сортировки списка
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv); // qt приложение
Widget w; // виджет главного окна
w.setWindowTitle("List Sort"); // задаём имя окна
QLabel hello; // создаём Label
hello.setText("Press Button to Sort"); // в Label вспомогатльный текст
MyQListWidget * SortList = new MyQListWidget; // создаём список
QStringList elements; // создаём набор строк которые будут использоваться как эл-ты списка
elements << "Jon" << "Piter" << "Anton"; // заполняем набор строк
SortList->addItems(elements); // добавляем элементы в список
QPushButton* knopka = new QPushButton("Sort"); // создаём кнопку
QObject::connect(knopka,SIGNAL(clicked()),SortList,SLOT(sortAll())); // соединяем сигнал clicked() кнопки со слотом sortit()
QVBoxLayout* layout = new QVBoxLayout; // создаём лейоут
layout->addWidget(&hello); // помещаем в него элементы формы:
layout->addWidget(knopka); // лэйбл, кнопку и список
layout->addWidget(SortList);
w.setLayout(layout); // устанавливаем лэйоут для окна
w.show();
hello.show(); // плказываем элементы
SortList->show();
knopka->show();
return a.exec();
}
Q_OBJECT
public slots:
void sortAll(); // объявляем слот
};
void MyQListWidget::sortAll() { // определяем слот
this->sortItems(); // вызов метода сортировки списка
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv); // qt приложение
Widget w; // виджет главного окна
w.setWindowTitle("List Sort"); // задаём имя окна
QLabel hello; // создаём Label
hello.setText("Press Button to Sort"); // в Label вспомогатльный текст
MyQListWidget * SortList = new MyQListWidget; // создаём список
QStringList elements; // создаём набор строк которые будут использоваться как эл-ты списка
elements << "Jon" << "Piter" << "Anton"; // заполняем набор строк
SortList->addItems(elements); // добавляем элементы в список
QPushButton* knopka = new QPushButton("Sort"); // создаём кнопку
QObject::connect(knopka,SIGNAL(clicked()),SortList,SLOT(sortAll())); // соединяем сигнал clicked() кнопки со слотом sortit()
QVBoxLayout* layout = new QVBoxLayout; // создаём лейоут
layout->addWidget(&hello); // помещаем в него элементы формы:
layout->addWidget(knopka); // лэйбл, кнопку и список
layout->addWidget(SortList);
w.setLayout(layout); // устанавливаем лэйоут для окна
w.show();
hello.show(); // плказываем элементы
SortList->show();
knopka->show();
return a.exec();
}
Вы вынесли определение класса в отдельный хашник? Иначе никаких моков вы не получите.
Цитата:
Вы вынесли определение класса в отдельный хашник? Иначе никаких моков вы не получите.
Спасибо большое :) Заработало.