Создание неограниченного количества элементов |
Здравствуйте, гость ( Вход | Регистрация )
Создание неограниченного количества элементов |
RazrFalcon |
2.7.2010, 19:31
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
К примеру по нажатии кнопки рядом появляется еще одна кнопка.
Как это реализовать, так как надо каждый раз давать имя новому элементу(кнопке). PS желательно чтоб действие по нажатии главной кнопки передавалось и остальным (если нажму 50-ю кнопку тоже появится еще одна)PSS ну или к примеру вставить QgraphicsView в каждую ячейку таблицы, пусть даже при условии что картинка на нем будет одна и та же. |
|
|
Litkevich Yuriy |
2.7.2010, 20:24
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
RazrFalcon, в этой ситуации я всем рекомендую смотреть пример "Calculator" (examples\widgets\calculator)
|
|
|
RazrFalcon |
2.7.2010, 21:31
Сообщение
#3
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
Litkevich Yuriy |
2.7.2010, 23:44
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
тепло, теперь разберись, как определяется, какую кнопку нажали.
|
|
|
Гость_Гость_* |
9.7.2010, 3:30
Сообщение
#5
|
Гости |
Пришол из этой темы
Вот собственно код, что здесь не так?. Жалуется, что конструктор у QPushButton private main.cpp CODE #include "text_button.h" int main(int argc, char **argv) { QApplication app(argc,argv); QWidget wgt; text_button *buttonNew = new text_button; QPushButton *mainbtn = new QPushButton("Add Button"); QVBoxLayout *vbl = new QVBoxLayout(); vbl->addWidget(mainbtn); wgt.setLayout(vbl); /* Добавить класс для создания поля и кнопки */ QPushButton btn = buttonNew->NewButton(); //vbl->addWidget(btn); wgt.show(); /* QObject::connect(&mainbtn, SIGNAL(clicked()), &buttonNew, SLOT(NewButton()) ); */ return app.exec(); } text_button.h CODE #ifndef TEXT_BUTTON_H #define TEXT_BUTTON_H #include <QObject> #include <QtGui> class text_button : public QObject { Q_OBJECT public: explicit text_button(QObject *parent = 0); QPushButton NewButton(); signals: public slots: void clickMainBtn(); }; #endif // TEXT_BUTTON_H text_button.cpp CODE #include "text_button.h" text_button::text_button(QObject *parent) : QObject(parent) { /*Все объекты должны создаваться в конструкторе */ } QPushButton text_button::NewButton() { QPushButton *btn1 = new QPushButton("new"); //wgt->addWidget(btn1); //cout << btn1 << endl; return btn1; } void text_button::clickMainBtn() { //emit NewButton(); } Я понимаю, что неплохо было бы передать виджет в класс как родитель, но дело не в правильности кода, а в понимании.. |
|
|
haiflive |
9.7.2010, 4:11
Сообщение
#6
|
Студент Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: 0 |
Всё вопрос снят, разобрался..
Чуть позже выложу рабочий пример.. авось кому пригодится.. Будь они не ладны эти указатели.. |
|
|
Litkevich Yuriy |
9.7.2010, 6:34
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
haiflive, в Qt у всех наследников QObject конструктор копирования и оператор присваивания находятся в закрытой (private) области. Т.к. операции копирования таких объектов не тривиальные. Поэтому всюду в программах Qt используется динамическое создание объектов-наследников QObject. Ну и соответственно работать с такими объектами нужно через указатель.
|
|
|
haiflive |
9.7.2010, 15:14
Сообщение
#8
|
Студент Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: 0 |
Как-то в голове не укладывается, что вопрос решился обёрткой на базовый QT класс..
Тоесть, всё что нужно было, это создать новый класс отнаследованый от требуемого объекта(в данном случае QPushButton), и конструктор нового класса объявить как public?. И всё работает.. или всётаки могут быть какие-то проблемы?.
|
|
|
Алексей1153 |
10.7.2010, 6:19
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
ИМХО, лучше так
а ещё лучше - массив указателей и не париться по ерунде ) Сообщение отредактировал Алексей1153 - 13.7.2010, 18:42 |
|
|
Litkevich Yuriy |
10.7.2010, 11:03
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Как-то всё очень сложно, пример "Калькулятор" явно не был изучен
|
|
|
Текстовая версия | Сейчас: 27.11.2024, 4:07 |