crossplatform.ru

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


  Ответ в двойной клик на tabWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 10 сообщений [ в обратном порядке ]
novichkov Дата 7.12.2011, 18:23
  QTabWidget::setTabsClosable ( bool closeable )
+ соответствующий слот, как сказал silver47
silver47 Дата 7.12.2011, 18:04
 
QObject::connect(TAB, SIGNAL(tabCloseRequested(int)), this, SLOT(closeTabRequest(int)));

А там уж что хотите делайте с виджетом :) проверяйте состояние и выводите запрос на сохранение, или же удаляйте таб и удаляйте виджет.
Пы.Сы. чтобы предупредить упреки в мой адрес, я традиционно, делю проверку на сохраненные\не сохраненные изменения в переопределенном методе CloseEvent
B_u_R_n Дата 7.12.2011, 14:44
  вот сразу дабы не плодить темы , а есть ли возможность динамически на определенную табу добавлять функцию закрытия ее пользователем(на странице таба крестик ) что бы пользователь мог его закрыть, после определенных действий
novichkov Дата 7.12.2011, 14:31
  А у меня переопределен mouseDoubleClickEvent:

class TabBar : public QTabBar
{
    Q_OBJECT
signals:
    void doubleClicked(int);
public:
    TabBar(QWidget *parent = 0);
protected:
    void mouseDoubleClickEvent(QMouseEvent * event) {
        int pos=tabAt(event->pos());
        if (event->button()==Qt::LeftButton && pos!=-1)
            emit doubleClicked(pos);
    }
};

class TabWidget : public QTabWidget
{
    Q_OBJECT
public:
    explicit TabWidget(QWidget *parent = 0): QTabWidget(parent)
    , m_tabBar(new TabBar(this))
{//Trace trace(Q_FUNC_INFO);
    connect(m_tabBar, SIGNAL(doubleClicked(int)), this, SIGNAL(newTab(int)));
    setTabBar(m_tabBar);
}
signals:
    void newTab(int);
private:
    TabBar *m_tabBar;
};


B_u_R_n Дата 7.12.2011, 14:10
  Помогли мне с классом , получилось вот что
class MyTabWidget : public QTabWidget
{
    Q_OBJECT
public:
    MyTabWidget(QWidget *parent = 0) : QTabWidget(parent)
    {
        tabBar()->installEventFilter(this);
    }

signals:
    void tabBarDoubleClicked();

protected:
    bool eventFilter(QObject *o, QEvent *e)
    {
        if (o != tabBar())
            return false;

        if (e->type() == QEvent::MouseButtonDblClick) {
            QMouseEvent *me = static_cast<QMouseEvent *>(e);

            if (tabBar()->tabAt(me->pos()) != -1)
            {
                emit tabBarDoubleClicked();
            }

            return true;
        }
        return false;
    }
};

но почему-то если вклад несколько, сигнал срабатывает столько раз, сколько страниц на tabWidget -е моем
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 11.7.2025, 15:04