crossplatform.ru

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


  Ответ в Несколько вопросов про QTreeWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 4.1.2010, 16:23
 
Цитата(breeve @ 4.1.2010, 19:01) *
Тем более в доке же ясно написано
читай доку по QObject::connect, там действительно явно написано.
DIMEDROLL Дата 4.1.2010, 16:01
 
Цитата(breeve @ 4.1.2010, 14:46) *
Че то помоему это какой-то бред))
Разве может функция принимать на параметр только тип "SIGNAL(itemClicked(QTreeWidgetItem *, int )"?

хех, функция не может, но ты ведь передаешь не функцию а ее имя и типы параметров которые преобразуются макросом SIGNAL в строку типа:
const char* str = "itemClicked(QTreeWidgetItem *, int )"
почитай еще доку по SIGNAL и SLOT, а лучше глянь их реализацию в исходном коде, так сразу и поймешь

Цитата
А как мне слот welcome() поменять чтобы, нажатие home одно на на что-то другое - другое?

это что значит?
breeve Дата 4.1.2010, 16:01
  Че то помоему это какой-то бред))
Разве может функция принимать на параметр только тип "SIGNAL(itemClicked(QTreeWidgetItem *, int )"?
Тем более в доке же ясно написано QTreeWidget::itemClicked ( QTreeWidgetItem * item, int column ) ..
А item это как раз мой home.. А насчет слота.. Создавал я его сам.. и поэтому какие там могут быть параметры..

А в доке про connect так и написано.. :blush2:
изменил вот так:
connect(twg, SIGNAL(itemClicked(QTreeWidgetItem *, int)), this, SLOT(welcome()));
и все работает.. спасибо

А как мне слот welcome() поменять чтобы, нажатие home одно на на что-то другое - другое?
void MainWindow::welcome()
{
        textEdit->setHtml(tr("<html>"
                      "<body>"
                      "<div align=\"center\"><h1>Blender</h1></div>"
                      "<div align=\"left\"><p>Blender — пакет для создания трёхмерной компьютерной графики, включающий в"
                      "себя средства моделирования, анимации, рендеринга, постобработки видео, а"
                      "также создания интерактивных игр.</p><p>Особенностями пакета являются малый размер, высокая скорость рендеринга,"
                      "наличие версий для множества операционных систем — FreeBSD, GNU/Linux, Mac OS X, SGI Irix 6.5, Sun Solaris 2.8 (SPARC),"
                      "Microsoft Windows, SkyOS, MorphOS и Pocket PC. Пакет имеет такие функции, как динамика твёрдых тел, жидкостей и мягких "
                      "тел, систему горячих клавиш, большое количество легко доступных расширений, написанных на языке Python.</p>"
                      "Программа является свободным программным обеспечением и распространяется под лицензией GNU GPL.</div>"
                      "</body>"
                      "</html>"));

}


Естественно надо параметры поставить.. а дальше то как?

Я кажется понял если не правильно, то поправьте.. Сравнивать два указателя (параметр и home) и далее выводить..
DIMEDROLL Дата 4.1.2010, 15:37
 
Цитата(breeve @ 4.1.2010, 14:27) *
connect(twg, SIGNAL(itemClicked(home, 0)), this, SLOT(welcome()));

правильно писать так:
connect(twg, SIGNAL(itemClicked(QTreeWidgetItem *, int )), this, SLOT(welcome(QTreeWidgetItem *, int)));

макрос SIGNAL принимает строку const char* в качестве параметра, сигнал и слот принимают только типы параметров а не сами данные
у сигнала и слота должны быть одинаковые параметры(в этом случае (QTreeWidgetItem *, int)) - это уточни в доке

лучше почитай в доке по методу QObject::connect()
breeve Дата 4.1.2010, 15:27
  Я создал иерархический список добавил в него одну позицию, и пытаюсь сделать связь.
В этом классе есть сигнал
Цитата
void QTreeWidget::itemClicked ( QTreeWidgetItem * item, int column ) [signal]

Так вот я написал
    twg = new QTreeWidget;
    home = new QTreeWidgetItem(twg);
    home->setText(0, "Home");
    twg->setItemExpanded(home, true);
    connect(twg, SIGNAL(itemClicked(home, 0)), this, SLOT(welcome()));

Мне выводится ошибка:
Цитата
Object::connect: No such signal QTreeWidget::itemClicked(home, 0) in mainwindow.cpp:37

Программа запускается .. я нажимаю на home.. и ничего не происходит.. Что не так делаю?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 16:12