crossplatform.ru

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

> проблема с QSignalMapper
votan
  опции профиля:
сообщение 10.10.2009, 11:06
Сообщение #1


Студент
*

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

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




Репутация:   0  


Здравствуйте, собственно проблема заключается в том что объекты не могут поставить на себя QPalette
кусок инициализации маппера
MyTileWidget::MyTileWidget()
{
    signalMapper = new QSignalMapper(this);
    menu = new QMenu;

    QVector<QString> tilesType;
    tilesType.append(QString("Pin"));
    tilesType.append(QString("Sou"));
    tilesType.append(QString("Man"));

    foreach(QString type, tilesType){
        QAction* action = new QAction(type,menu);
        QObject::connect(action,SIGNAL(triggered()),signalMapper,SLOT(map()));
        signalMapper->setMapping(action,type);
        menu->addAction(action);
    }

    QObject::connect(signalMapper,SIGNAL(mapped(QString)),this,SIGNAL(clicked(QString)));
    QObject::connect(this,SIGNAL(clicked(QString)),this,SLOT(slotChangeColor(QString)));
    ..........
}

void MyTileWidget::slotChangeColor(QString type)
{
    QPalette palette;
    if(type=="Pin")
        palette.setColor(QPalette::Background,Qt::black);
        //qDebug()<<"Olol is PIN!";
    else if(type=="Sou")
        qDebug()<<"Haha its SOU!";
        //palette.setColor(QPalette::Background,Qt::green);
    else if(type=="Man")
        qDebug()<<"TT its MAN!";
        //palette.setColor(QPalette::Background,Qt::red);
    else
        qDebug()<<"Its not here!";
    
setPalette(palette);
    //
    QObject* obj = signalMapper->mapping(type);
    (static_cast <QWidget*>(obj))->setPalette(palette);
}


в слоте slotChangeColor пытался, приводить возвращаемый указатель, и просто устанавливать this->setPalette(), работать отказывается, хотя если отображать объект сразу, то все работает как надо, у меня же 14 объектов располагаются в другом объекте, и он заходит и выводит сообщения по qDebug(), но палитру менять отказывается
Table::Table()
{
    createTable();
}

void Table::createTable()
{
    QHBoxLayout* layout = new QHBoxLayout;
    QVector<MyTileWidget*> tiles;
    for(int i=0; i<15; ++i)
        tiles.append(new MyTileWidget);

    foreach(MyTileWidget* tile, tiles)
        layout->addWidget(tile);

    setLayout(layout);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
votan
  опции профиля:
сообщение 10.10.2009, 13:09
Сообщение #2


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 10.10.2009, 13:51) *
void MyTileWidget::slotChangeColor(QString type)
{
    QAction* a = qobject_cast<QAction*>(sender());
    if(a){
        QString s = a->text();
        switch(s){
        // разбор соответствий
        }
    {
}

спасибо, работает :), но опять же только с единичным объектом при вызове mytilewidget.show(), все как надо цвет меняет, оповещает о выборе, а с table.show() опять лишь на половину, оповещает, а цвет не удается сменить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- votan   проблема с QSignalMapper   10.10.2009, 11:06
- - kwisp   может дело в static_cast? тролли советуют qobject...   10.10.2009, 11:24
|- - BRE   Цитата(kwisp @ 10.10.2009, 12:24) может д...   10.10.2009, 11:29
- - kwisp   на QAction не обратил внимания. каюсь, однако чег...   10.10.2009, 11:36
- - votan   мне каким-то образом нужно получить доступ к конкр...   10.10.2009, 11:37
|- - BRE   Цитата(votan @ 10.10.2009, 12:37) мне как...   10.10.2009, 11:43
- - votan   Цитата(kwisp @ 10.10.2009, 12:36) на QAct...   10.10.2009, 11:49
- - kwisp   там не все так просто, если не ошибаюсь, палитра в...   10.10.2009, 11:52
|- - BRE   votan, попробуй менять цвет виджета не через палит...   10.10.2009, 12:09
- - Litkevich Yuriy   Цитата(votan @ 10.10.2009, 15:37) в моем ...   10.10.2009, 12:14
- - votan   Цитата(BRE @ 10.10.2009, 13:09) votan, по...   10.10.2009, 12:17
|- - BRE   Покажи код, как ты сейчас все делаешь.   10.10.2009, 12:21
- - votan   Цитата(Litkevich Yuriy @ 10.10.2009, 13:1...   10.10.2009, 12:40
- - Litkevich Yuriy   void MyTileWidget::slotChangeColor(QSt...   10.10.2009, 12:51
- - votan   Цитата(Litkevich Yuriy @ 10.10.2009, 13:5...   10.10.2009, 13:09
|- - BRE   Цитата(votan @ 10.10.2009, 14:09) а с tab...   10.10.2009, 13:25
- - votan   спасибо большое   10.10.2009, 13:38


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


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




RSS Текстовая версия Сейчас: 5.12.2024, 3:02