Russian Qt Forum
Ноябрь 22, 2024, 10:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Вопросы новичков / Re: setStyleSheet для QToolBar не работает : Август 11, 2022, 16:10
%1 выглядит как параметр для QString::arg(), поставь туда обычное число для теста.

всё есть в документации: https://doc.qt.io/qt-5/stylesheet.html, там вверху ссылки на синтаксис и полный reference

помогло, спасибо!
2  Qt / Вопросы новичков / Re: setStyleSheet для QToolBar не работает : Август 11, 2022, 15:03
может ему не нравится ошибка в стиле? %1px


а как должно быть правильно? где вообще найти исчерпывающую спецификацию по стилям для Qt? какие там ключевые слова, возможные значения и проч.
3  Qt / Вопросы новичков / setStyleSheet для QToolBar не работает : Август 11, 2022, 09:24
создал свой тулбар от QToolBar
по умолчанию используется стиль Windows 10
мне нужно задать свой цвет для моего тулбара и установить видимые границы особенно когда он docked

Код:
    pToolBar = new MyToolBar(this); // QToolBar
    QString styleSheet(
        "QToolBar "
        "{background-color: rgba(255,255,255,128); "
        "border-radius: %1px;} "
    );
    pToolBar->setStyleSheet(styleSheet);

    pDock = new QDockWidget("Some toolbar", this);
    pDock->setWidget(pToolBar);
    pDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

почему setStyleSheet ничего не меняет и как это исправить?
4  Qt / Вопросы новичков / QMdiArea: проблема с QMdiSubWindow::windowStateChanged : Август 10, 2022, 17:56
Код:
    m_pMdi = new QMdiArea(this);
    m_pMdi->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    m_pMdi->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    setCentralWidget(m_pMdi);

    Widget* pWidget = new Widget(this); // QWidget
    m_pMdi->addSubWindow(pWidget);

    connect(pWidget, SIGNAL(windowStateChanged(Qt::WindowStates, Qt::WindowStates)), pWidget, SLOT(windowDockChanged(Qt::WindowStates, Qt::WindowStates)));


метод connect не работает. пробовал наследовать Widget от QMdiSubWindow - результат такой же. посоветуйте куда палочкой потыкать, чтобы заработало?

пс. проблема сама собой решилась

Код:
QMdiSubWindow* pMdiWindow = m_pMdi->addSubWindow(pWidget);
connect(pMdiWindow, SIGNAL(windowStateChanged(Qt::WindowStates, Qt::WindowStates)), pWidget, SLOT(windowDockChanged(Qt::WindowStates, Qt::WindowStates)));
5  Qt / Вопросы новичков / Re: Рисование иконки без аретфактов : Август 09, 2022, 09:14
Нужно поменять местами 2 оператора:
Код
C++ (Qt)
 
   px.fill(Qt::transparent);
   QPainter painter(&px);
 

Спасибо! Помогло. Не могли бы вы вкратце объяснить почему именно такая последовательность?
6  Qt / Вопросы новичков / Рисование иконки без аретфактов : Август 08, 2022, 14:47
рисую заполненный круг с определенным цветом. в результате получается круг на фоне квадрата.

Код:
    QIcon icon;
    QPixmap px(30, 30);
    QPainter painter(&px);
    
    px.fill(Qt::transparent);
    painter.drawEllipse(QRect(px.rect()));
    icon.addPixmap(px);

как избавиться от уголков квадрата, чтобы был видеть только нужный круг? см. картинку в аттаче

заодно прошу совета почему текст не отображается справа от иконки для QToolButton?

пс. для выравнивания текста с иконкой по левому краю использовал setStyleSheet("Text-align:left");
7  Qt / Вопросы новичков / Re: Connect не работает : Август 04, 2022, 09:15
тему можно закрыть.
Закрывальщики все уехали за бугор Подмигивающий Такое ощущение, что человек банально забыл сделать qmake((

я не использую qmake. тулчейн QT легко интегрируется в MSVS
8  Qt / Вопросы новичков / Re: Connect не работает : Август 03, 2022, 17:27
При использовании старой нотации connect слоты необходимо объявлять явно, например в секции public slots. Думаю, в этом причина.
Для новой, с использованием указателей на функции, этого не требуется.

тему можно закрыть. в тестовом приложении все работает. в оригинальной программе этот же код не работает. пока что отличий не нашел...
9  Qt / Вопросы новичков / Re: Connect не работает : Август 03, 2022, 14:41
ну вот так бы сразу. теперь ошибка очевидна Улыбающийся

у тебя создан pAction в объекте pMainMenu, а ты пытаешься законнектить pAction из MainWindow, под который не выделена память. правильно будет:
Код
C++ (Qt)
connect(pMainMenu->pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow(bool)));

ну я так и делаю, см. код в самом начале ветки.
в MainWindow я создаю pMainMenu и получаю pAction из этого pMainMenu
10  Qt / Вопросы новичков / Re: Connect не работает : Август 03, 2022, 09:51
я не вижу куска кода, в котором было бы видно объявление этого метода.

попробуй снести папку сборки и построить снова, также посмотри что там MOC генерирует. еще можешь поискать аналогичные багрепорты на https://bugreports.qt.io/

если бы была проблема, она бы наверное проявлялась на всех платформах.

уже пробовал. я перепробовал наверное всё, что только возможно прежде чем придти на этот форум.

вот кусок кода

Код:
MainMenu::MainMenu(QWidget* pMainWindow): QMenuBar(pMainWindow)
{
    pAction = new QAction("text");
}

MainWindow::MainWindow(QWidget* pParent) : QMainWindow(pParent)
{

  pMainMenu = new MainMenu()
  setMenuBar(pMainMenu);

  connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow(bool)));

}
11  Qt / Вопросы новичков / Re: Connect не работает : Август 02, 2022, 15:34
всё работает нормально и со старым синтаксисом тоже. может ты забыл добавить параметр bool в свой метод openMyWindow?
Код
C++ (Qt)
void openMyWindow(bool b)

нет, не забыл. я же привел пример кода. при чем в других местах программы стандартный connect работает как надо. наверное какая-то проблема либо в самом QAction либо что-то сломалось в мета компиляторе
12  Qt / Вопросы новичков / Re: Connect не работает : Август 02, 2022, 12:49
альтернативный метод connect работает, а вот обычный нет. по какой-то причине MOC не может найти сигнал для моего QAction и вылетает с ошибкой

Код:
QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal,
                                         const QObject *receiver, const char *method,
                                         Qt::ConnectionType type)
{
    ...

    if (method_index_relative < 0) {
        err_method_notfound(receiver, method_arg, "connect");
        err_info_about_objects("connect", sender, receiver);
        return QMetaObject::Connection(nullptr);
    }

    ...
}

Qt 6.3.1, в отладке. QAction pAction = new QAction("text",0);
13  Qt / Вопросы новичков / Re: Connect не работает : Август 02, 2022, 12:20

Код:
connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow()));


не работает...

Код:
connect(pAction, SIGNAL(triggered(bool)), this, SLOT(openMyWindow(bool)));
14  Qt / Вопросы новичков / Re: Connect не работает : Август 01, 2022, 18:26
Все дело в параметрах.
В сигнале и слоте не совпадают параметры.

Код:
connect(pAction, SIGNAL(pAction->triggered(bool)), this, SLOT(openMyWindow(bool)));

также не работает... не может найти сигнал triggered по какой-то причине.
15  Qt / Вопросы новичков / Connect не работает : Август 01, 2022, 15:01
Кто-нибудь сможет объяснить почему вот так работает:

Код:
   // pMainMenu = new QMenuBar()
    QAction* pAction = pMainMenu->myAction(); // new QAction
    connect(pAction, &QAction::triggered, this, &MainWindow::openMyWindow);

... а вот так НЕ работает?

Код:
   // pMainMenu = new QMenuBar()
    QAction* pAction = pMainMenu->myAction(); // new QAction
    connect(pAction, SIGNAL(pAction->triggered(bool)), this, SLOT(openMyWindow()));

внутри метода connect MOC не может найти сигнал во втором случае.
Страниц: [1]

Страница сгенерирована за 0.22 секунд. Запросов: 23.