Russian Qt Forum
Март 28, 2024, 19:54
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Динамическое создание элементов
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Динамическое создание элементов (Прочитано 10610 раз)
Yagoz
Гость
Динамическое создание элементов
«
:
Февраль 26, 2018, 19:31 »
Выпала мне участь писать приложение на C++, для чего я выбрал Qt
Сразу отмечу, что опыта в программировании
катастрофически мало
Теперь к сути:
Приложение обрабатывает txt файл, откуда берет по три значения из строчки
Одно значение должно использоваться для имени элемента, два остальных выводятся при нажатии/наведении мыши на элемент
Так же, в зависимости от последних двух параметров должна выбираться конкретная иконка
Как это реализовать?
Я вижу вариант с беспрерывным созданием кнопок на форме и созданием своего объекта класса
Вариант с кнопками более менее понятен, но скорее всего очень неудобен
Про классы и объекты, особенно их создание я ничего не знаю
Буду рад ссылкам на статьи с примерами, кускам кодов и объяснениям "для чайников"
Записан
qate
Супер
Offline
Сообщений: 1175
Re: Динамическое создание элементов
«
Ответ #1 :
Февраль 27, 2018, 08:37 »
какие книги по qt ты уже прочитал ?
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Динамическое создание элементов
«
Ответ #2 :
Февраль 27, 2018, 10:14 »
У всех виджетов есть такой метод - setToolTip - установка "воздушной" подсказки - то что всплывает при наведении мышки
Записан
Yagoz
Гость
Re: Динамическое создание элементов
«
Ответ #3 :
Февраль 27, 2018, 21:09 »
Цитата: qate от Февраль 27, 2018, 08:37
какие книги по qt ты уже прочитал ?
К сожалению ни одной из-а банальной нехватки времени
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Динамическое создание элементов
«
Ответ #4 :
Февраль 27, 2018, 21:28 »
Цитировать
из-а банальной нехватки времени
Конечно, лучше его тратить на нелепые вопросы, выхватывание каких-то не относящихся к делу кусков из статей и примеров и строить дом, не понимая, что такое кирпичи...
Записан
Yagoz
Гость
Re: Динамическое создание элементов
«
Ответ #5 :
Февраль 28, 2018, 11:23 »
Цитата: Day от Февраль 27, 2018, 21:28
Цитировать
из-а банальной нехватки времени
Конечно, лучше его тратить на нелепые вопросы, выхватывание каких-то не относящихся к делу кусков из статей и примеров и строить дом, не понимая, что такое кирпичи...
А если по делу?
Было бы это дело по моей инициативе - нашел бы для него время, подошел бы более основательно. А так мне просто надо сделать и забыть.
«
Последнее редактирование: Февраль 28, 2018, 12:09 от Yagoz
»
Записан
ssoft
Программист
Offline
Сообщений: 574
Re: Динамическое создание элементов
«
Ответ #6 :
Февраль 28, 2018, 13:17 »
Описываемая задача, как раз подходит для
самостоятельного
изучения Qt.
Решение достаточно простое - кнопки накидать, таблицу сбацать или даже модель для вьюшек сформировать.
Просто никто не хочет делать эту работу за другого, а потом еще и объяснять как это сделано.
Если что-то написали - выкладывайте проект и спрашивайте по существу, что не получается.
Цитата: Yagoz от Февраль 28, 2018, 11:23
А если по делу?
Было бы это дело по моей инициативе - нашел бы для него время, подошел бы более основательно. А так мне просто надо сделать и забыть.
А так, то предлагаю сразу забыть) и не мучаться.
Записан
ViTech
Гипер активный житель
Offline
Сообщений: 858
Re: Динамическое создание элементов
«
Ответ #7 :
Февраль 28, 2018, 13:27 »
Поиск в гугле "qt tutorial":
Qt for Beginners
Qt Examples And Tutorials
Цитата: Yagoz от Февраль 26, 2018, 19:31
Теперь к сути:
Приложение обрабатывает txt файл, откуда берет по три значения из строчки
Одно значение должно использоваться для имени элемента, два остальных выводятся при нажатии/наведении мыши на элемент
Так же, в зависимости от последних двух параметров должна выбираться конкретная иконка
Как это реализовать?
Я вижу вариант с беспрерывным созданием кнопок на форме и созданием своего объекта класса
В итоге что должно получиться-то?
Creating a Qt Widget Based Application
Layout Management
Записан
Пока сам не сделаешь...
Yagoz
Гость
Re: Динамическое создание элементов
«
Ответ #8 :
Февраль 28, 2018, 14:08 »
Цитата: ssoft от Февраль 28, 2018, 13:17
А так, то предлагаю сразу забыть) и не мучаться.
Я бы с радостью, только есть слово "надо"
В общем, на данный момент попробую организовать собственный виджет, будут вопросы-задам
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Динамическое создание элементов
«
Ответ #9 :
Март 02, 2018, 16:07 »
Определились с элементом на который будете нажимать?
Если QPushButton визуально не нравиться, его можно стилем допилить.
Не хотите ему изменять стиль, можно QLabel взять(ему нажималку сделать надо)
«
Последнее редактирование: Март 02, 2018, 16:10 от deMax
»
Записан
Yagoz
Гость
Re: Динамическое создание элементов
«
Ответ #10 :
Март 06, 2018, 20:22 »
Цитата: deMax от Март 02, 2018, 16:07
Определились с элементом на который будете нажимать?
... можно QLabel взять(ему нажималку сделать надо)
Остановился на QLabel
На данный момент как раз возник вопрос.
Как было оговорено, изображение подбирается в зависимости от параметров из файла
Я вижу два варианта реализации:
1) Функция подбирающая пикчу и возвращающая ее через Pixmap типа QPixmap picselect (...) {... return pic;}
2) Функция подбирающая пикчу и возвращающая путь к ней
Какой из этих вариантов будет являться рабочими наименее замороченным?
Записан
Bepec
Гость
Re: Динамическое создание элементов
«
Ответ #11 :
Март 07, 2018, 15:39 »
Любой, который вы сможете реализовать.
Ну и чисто благотворительность
(файл с тем же кодом доступен внизу в приложении)
Код:
QPixmap getPixmap(QString param1, QString param2)
{
// тут получаем картинку. В данном случае картинку будем получать из того что первый параметр папка, второй название файла
// т.е. к примеру getPixmap("c:/myPicture","abort.png");
// получаем pix = "картинка по пути c:/myPicture/abort.png"
QPixmap pix = QPixmap(param1 +"/"+ param2);
return pix;
}
void parseFileAndCreateLabel()
{
// строчки из файла
QStringList listString;
// список лейблов
QList<QLabel> listLabel;
// разделитель
QString separator = "\t";
// цикл по строкам
for (int i = 0; i < listString.size() ;i++)
{
// разбиваем строку по разделителю( в данном случае символ табуляции)
QStringList tempData = listString[i].split(separator);
// проверка на количество значений.
if (tempData.size != 3)
{
// вывод сообщения об ошибке, берём следующую строку. Но эт чисто для теста, ибо если таких будет много заколебаетесь щелкать :D
QMessageBox::alert(this, "Error", QString("Corrupted string") + listString[i] , QMessageBox::Ok);
// переходим в начало цикла к следующей строке
continue;
}
// создаём лейбл
QLabel* label = new QLabel;
// пихаем текст
label.setText(tempData[0]);
// запрашиваем картинку
QPixmap pix = getPixmap(tempData[1],tempData[2]);
// пихаем картинку.
label->setPixmap(pix);
// всё готово, пихаем лейбл в списочек готовых
listLabel.append(label);
}
// цикл по всем лейблам
for (int i = 0; i < listLabel.size() ;i++)
{
// добавляем на форму. Вместо verticalLayout подставляем свой layout который на форме, или свой
ui->verticalLayout->addWidget(listLabel[i]);
}
}
Записан
Yagoz
Гость
Re: Динамическое создание элементов
«
Ответ #12 :
Март 09, 2018, 13:13 »
Цитата: Bepec от Март 07, 2018, 15:39
Ну и чисто благотворительность
Большое спасибо за пример, разобрался, завелось)
Записан
Yagoz
Гость
Re: Динамическое создание элементов
«
Ответ #13 :
Март 20, 2018, 16:32 »
Вновь возникли вопросы
Все касательно компоновки в QScrollArea
По информации которую я нашел,рабочим вариантом является запихивание компоновки в QWidget, а его в QScrollArea. Сами объекты для компоновки в компоновку
Часть прописанная в описании формы:
Код:
QGridLayout* grid = new QGridLayout;
QWidget* widget = new QWidget(this);
widget->setLayout(grid);
ui->scrollArea->setWidget(widget);
grid->addWidget(ui->label1);
1)Каким образом все это должно создаваться: программно или можно ручками на форму?
2)Если все прописано в описании, то как сослаться на grid из обработчика кнопки (через ui->...grid-> не пашет)?
Записан
Day
Частый гость
Offline
Сообщений: 290
Re: Динамическое создание элементов
«
Ответ #14 :
Март 20, 2018, 17:25 »
Цитировать
как сослаться на grid
Код
C++ (Qt)
widget
->
layout
(
)
;
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...