Просмотр сообщений
|
Страниц: [1]
|
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 не может найти сигнал во втором случае.
|
|
|
|
|