crossplatform.ru

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

> создание виджетов в ходе работы программы
eldar85
  опции профиля:
сообщение 2.12.2010, 3:19
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


Хочу сделать что то на подобии ICQ, только для вконтакте, чтобы человек мог ввести аккаунт в эту программу и нажать - "залогиниться" и она вышла в сеть и проверила входящие, если есть то открывает для каждого написавшего свою вкладку в табВиджете.
Сделал в дизайнере внешний вид - поставил qtabWidget с одной вкладкой, поставил в нее один техтБраузер, один техтЭдит, пару кнопок и все. программа запустилось все нормально, но по ходу работы программы могут постучатся несколько человек, поэтому должны открыться другие вклидки табВиджета с такими же виджетами что и в первой вкладке. Только вот как это сделать??? как на ходу добавлять виджеты и вкладки таб виджета?
исходники выкладывать пока не имеет смысла так как пока все набросано только в дизайнере и кнопки соеденены со слотами. Они никак не относятся к виджетам, только помещают сообщение в техт едит.

Очень буду рад помощи)

Сообщение отредактировал eldar85 - 2.12.2010, 12:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
eldar85
  опции профиля:
сообщение 2.12.2010, 13:56
Сообщение #2


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


Возможно нужно воспользоваться Qt Script... Да уж, ни одного ответа, ниужели никто такого не делал...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:02
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


eldar85, а ты уже посмотрел справку по QTabWidget ?

Цитата
int QTabWidget::addTab ( QWidget * page, const QString & label )
Adds a tab with the given page and label to the tab widget, and returns the index of the tab in the tab bar.

If the tab's label contains an ampersand, the letter following the ampersand is used as a shortcut for the tab, e.g. if the label is "Bro&wse" then Alt+W becomes a shortcut which will move the focus to this tab.

Note: If you call addTab() after show(), the layout system will try to adjust to the changes in its widgets hierarchy and may cause flicker. To prevent this, you can set the QWidget::updatesEnabled property to false prior to changes; remember to set the property to true when the changes are done, making the widget receive paint events again.

See also insertTab().

int QTabWidget::addTab ( QWidget * page, const QIcon & icon, const QString & label )
This is an overloaded function.

Adds a tab with the given page, icon, and label to the tab widget, and returns the index of the tab in the tab bar.

This function is the same as addTab(), but with an additional icon.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 2.12.2010, 14:16
Сообщение #4


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


да смотрел, пробовал вот так:

    list << "qwe" << "rty" << "yui" << "iop" << "asd" << "dfg" << "hjk";

    textBrowser = new QTextBrowser[list.size() + 1];
    groupBox = new QGroupBox[list.size() + 1];
    layoutV = new QVBoxLayout[list.size() + 1];
    pushButton = new QPushButton[list.size() + 1];
    textEdit = new QTextEdit[list.size() + 1];

    for(int i = 0; i < list.size(); i++)
    {
        layoutV[i].addWidget(&textBrowser[i]);
        layoutV[i].addWidget(&pushButton[i]);
        layoutV[i].addWidget(&textEdit[i]);
        groupBox[i].setLayout(&layoutV[i]);
    }


но это просто для тестов что получиьтся, вроде вылазиют вкладки но при закрытии проги она дает ошибку и не известно же в начале сколько у меня будет окон, 5 или 25. Вот тут и запутался.

это я пробовал прям в конструкторе, было рпедложение изначально создать 100 окон и потом делать их видимыми. Но думаю есть более правильные подход, его только найти нужно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:17
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


а что тут делается, расскажи. Я не совсем понимаю что-то :)
    textBrowser = new QTextBrowser[list.size() + 1];
    groupBox = new QGroupBox[list.size() + 1];
    layoutV = new QVBoxLayout[list.size() + 1];
    pushButton = new QPushButton[list.size() + 1];
    textEdit = new QTextEdit[list.size() + 1];


вернее, понимаю - создаются массивы виджетов. А зачем именно массивы ?

по моему, надо как-то так
        QTabWidget tab(this);
        tab.addTab(new CMyBelovedPage(...),QString("1"));
        tab.addTab(new CMyBelovedPage(...),QString("2"));
        tab.addTab(new CMyBelovedPage(...),QString("3"));
        tab.addTab(new CMyBelovedPage(...),QString("4"));


Сообщение отредактировал Алексей1153 - 2.12.2010, 14:19
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 2.12.2010, 14:42
Сообщение #6


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


ооо вот это уже интересно))) я проста вот так динамически по ходу работы программы ни раз не менял ГУИ)) сейчас попробую)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.12.2010, 14:44
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


eldar85, хм, классы - они и в ГУЕ (извиняюсь) классы

Сообщение отредактировал Алексей1153 - 2.12.2010, 14:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 2.12.2010, 14:47
Сообщение #8


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  



все понял)

Сообщение отредактировал eldar85 - 2.12.2010, 14:47
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 3.12.2010, 7:02
Сообщение #9


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


получилось)))

myPage::myPage()
{
    pushButton = new QPushButton;
    textEdit = new QTextEdit;
    groupBox = new QGroupBox;
    layoutV = new QVBoxLayout;
    layoutV->addWidget(textEdit);
    layoutV->addWidget(pushButton);
    groupBox->setLayout(layoutV);
}



void MainWindow::start()
{
    myPage* page = new myPage;
    ui->tabWidget->addTab(page->groupBox, QString("123"));
}


только как сделать чтобы он как у тебя запускал как то так

void MainWindow::start()
{

    ui->tabWidget->addTab( new myPage(), QString("123"));
}


не получается, извиняюсь что туплю но не делал так никогда...

вроде как в документации

    
ui->tabWidget->addTab(new QWidget(),nameCategory->text())


вот так вот вставляет текстЕдит

void MainWindow::start()
{
    ui->tabWidget->addTab( new QTextEdit, QString("123"));
}


а что в моем то классе не так?

Сообщение отредактировал eldar85 - 3.12.2010, 6:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 3.12.2010, 7:53
Сообщение #10


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


не пойму, что ты делаешь. Зачем всё подряд вставляешь на таб ? На таб нужно вставлять только страницы твоего класса myPage
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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