не знаю даже как охарактеризовать...В скриншоте 3 QDiala, и дело в том, что они реагируют на мышкку без фокуса на них. т.е : если кликать на прямоугольник с цветом - QDial изменит своё значение, будет "следить" за мышкой. Как можно это убрать?
Такой проблемы нет в превьюшка из дизайнера..а вот когда вручную я написал, такая бага. Ничего кроме размешения виджета на форме, изменения макс.и мин. принимающих значений+wrapping я не делал...в чем может быть проблема?
нет, в зависимости от зоны нажатия..блин, это надо показывать в гифке или бинарник могу выслать..в общем зона реагирования Qdial больше, чем нужно..
небольшой примерчик накатал :
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui/QWidget>
#include <QDial>
#include <QHBoxLayout>
#include <QPushButton>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
QDial *dial;
QPushButton *btn;
QHBoxLayout *layout;
};
#endif // MAINWINDOW_H
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
dial = new QDial;
layout=new QHBoxLayout;
btn = new QPushButton;
layout->addWidget(dial);
layout->addWidget(btn);
this->setLayout(layout);
}
MainWindow::~MainWindow()
{
}
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
ну все нормально, ведь QDial он не круглый, а квадратный как и все виджеты. На основном виджете их всего два, и соответсвенно они занимают вдвоем почти все место, кроме зазоров между виджетами и границами окна
Бр, а в моем приложении их вообще 3, 3 кнопочки и 1 QPainter.. тоесть от такого фокуса не избавиться?или поставить какой-нибудь "Жесткий" фокус?
может просто изменить геометрию виджета?хотя он в целом сожмется..
вот тебе переделаный конструктор, для понимания (там виджеты раскрашены):
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
layout=new QHBoxLayout;
dial = new QDial;
QPalette p1(Qt::lightGray);
dial->setPalette(p1);
dial->setAutoFillBackground(true);
btn = new QPushButton;
QPalette p2(Qt::darkYellow);
btn->setPalette(p2);
btn->setAutoFillBackground(true);
layout->addWidget(dial);
layout->addWidget(btn);
this->setLayout(layout);
}
скомпилируй и попробуй в работеух, теперь все ясно стало,спасибоЧто-нибудь придумаю..а вот проблема в другом, что в дизайнере если такую-же форму генерировать, то такой проблемы нет.
Геометрию виджета надо менять, как я понял..
Ну спасибо, завтра разберусь, если жив останусь..заболел :/
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>199</width>
<height>68</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QDial" name="dial">
<property name="palette">
<palette>
<active>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>170</red>
<green>170</green>
<blue>127</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>170</red>
<green>170</green>
<blue>127</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="Base">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>170</red>
<green>170</green>
<blue>127</blue>
</color>
</brush>
</colorrole>
<colorrole role="Window">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>170</red>
<green>170</green>
<blue>127</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)