crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Динамический интерфейс
bo0blik
  опции профиля:
сообщение 16.10.2009, 9:50
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 13.9.2009
Пользователь №: 1089

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Возникла такая проблема у меня есть список из n строк:

Строка 1
Строка 2
Строка ...

Как мне преобразовать эти строки в n, к примеру, радиобутонов с названиями из строк?

Просто мне кажется что писать это с помощью статических элементов и кучи условий полнейший идиотизм.

Подскажите где копать, за код буду вообще дико благодарен.

Большое спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 16.10.2009, 10:12
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Примерно так:
for( int n = 0; n < 100; n++)
{
   QString sz = QString( "Строка %1").arg(n);
   QRadioButton *button = new QRadioButton( sz[n], this);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bo0blik
  опции профиля:
сообщение 16.10.2009, 10:24
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 27
Регистрация: 13.9.2009
Пользователь №: 1089

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 16.10.2009, 10:12) *
Примерно так:
for( int n = 0; n < 100; n++)
{
   QString sz = QString( "Строка %1").arg(n);
   QRadioButton *button = new QRadioButton( sz[n], this);
}


А как потом к элементу обратиться?

Минут десять назад у меня получилось следущее:

    int number = 4;
    QRadioButton *rad[number];

    for(int i = 0; i < number; i++)
    {
    rad[i] = new QRadioButton(this);
    rad[i]->setText("I'm alive bitch!");
    rad[i]->show();
    ui->verticalLayout_4->addWidget(rad[i]);
    }


Но по мне это какой-то epic fail.

И еще вопрос как лучше всего перемешать эти радио-буттоны в контейнере?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bahus
  опции профиля:
сообщение 16.10.2009, 10:46
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 16.10.2009
Пользователь №: 1157

Спасибо сказали: 0 раз(а)




Репутация:   0  


Может поможет, я делал динамические пункты в меню. Ток одно смущает, походу там есть утечка памяти, и написано может немного коряво.

someclass.h
private:
void addHostAction(QString &hostName);        
void delHostAction(QString &hostName);        
void buildHostMenu();        
bool findHostAction(QAction *hostAction, QString &hostActionName);

QMenu *hostMenu;          
QList<QAction*> hostMenuActions;


someclass.cpp
void MainWindow::addHostAction(QString &hostName) {     
QAction *hostAction = new QAction(hostName,this);      
connect(hostAction, SIGNAL(triggered()), this, SLOT(on_hostActionCicked()));    
hostMenuActions.append(hostAction);    
this->buildHostMenu();
}

void MainWindow::delHostAction(QString &hostName) {    
int j = 0;    
QList<QAction*>::iterator i = hostMenuActions.begin();      
while (i != hostMenuActions.end()){        
   if (findHostAction(*i,hostName)){            
     hostMenuActions.removeAt(j);            
     break;        
   }        
  ++i;        
  ++j;    
}
this->buildHostMenu();
}

void MainWindow::buildHostMenu() {    
QList<QAction*>::const_iterator i = hostMenuActions.begin();      
hostMenu->clear();    
while (i != hostMenuActions.end()){        
  hostMenu->addAction(*i);        
  ++i;    
}
}

bool MainWindow::findHostAction(QAction *hostAction, QString &hostActionName) {    
if (hostAction->text() == hostActionName)        
  return true;    
else        
  return false;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 16.10.2009, 11:06
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


bo0blik, почитай про X-solution я иногда использую.
пример есть файл str.def
X("привет")
Х("как дела?")
Х("у меня тоже ничего")
...//и так далее хоть 1000 штук

там где тебе надо получить объекты с этим самыми строками из str.def
пишешь
QList<QPushButton*> btnLst;
#define X(a) btnLst<<(new QPushButton(a));
# include "str.def"
#undef X//

ну или что то подобное.
есть и + и -.

Сообщение отредактировал kwisp - 16.10.2009, 11:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 16.10.2009, 15:34
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


bo0blik,
спасибо за "спасибо"
вообще первоисточник здесь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 20:52