crossplatform.ru

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


  Ответ в Небольшая проблемка с QDial
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 18.3.2009, 0:47
 
ui-файл

<?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>


Andrewshkovskii Дата 18.3.2009, 0:47
  Ну спасибо, завтра разберусь, если жив останусь..заболел :/
Litkevich Yuriy Дата 18.3.2009, 0:46
 
Цитата(Andrewshkovskii @ 18.3.2009, 3:27) *
может просто изменить геометрию виджета?
можешь жестко задать размеры каждого потенциометра, почему-то его предпочитаемый размер не квадратный, а прямоугольный

Цитата(Andrewshkovskii @ 18.3.2009, 3:42) *
что в дизайнере если такую-же форму генерировать, то такой проблемы нет.
все тоже самое
Andrewshkovskii Дата 18.3.2009, 0:42
  ух, теперь все ясно стало,спасибо:)Что-нибудь придумаю..а вот проблема в другом, что в дизайнере если такую-же форму генерировать, то такой проблемы нет.
Геометрию виджета надо менять, как я понял..
Litkevich Yuriy Дата 18.3.2009, 0:40
  вот тебе переделаный конструктор, для понимания (там виджеты раскрашены):
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);
}
скомпилируй и попробуй в работе

добавлю: и в дизайнере все тоже самое.
Andrewshkovskii Дата 18.3.2009, 0:27
  Бр, а в моем приложении их вообще 3, 3 кнопочки и 1 QPainter.. тоесть от такого фокуса не избавиться?или поставить какой-нибудь "Жесткий" фокус?
может просто изменить геометрию виджета?хотя он в целом сожмется..
Litkevich Yuriy Дата 18.3.2009, 0:25
  ну все нормально, ведь QDial он не круглый, а квадратный как и все виджеты. На основном виджете их всего два, и соответсвенно они занимают вдвоем почти все место, кроме зазоров между виджетами и границами окна
Andrewshkovskii Дата 18.3.2009, 0:06
  небольшой примерчик накатал :
#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, то зажиманием и перетаскиванием мышки на таком(линией отчерчена граница реагирования QDial :
Litkevich Yuriy Дата 17.3.2009, 21:44
 
Цитата(Andrewshkovskii @ 17.3.2009, 23:48) *
это надо показывать в гифке или бинарник могу выслать
ты лучше маленьки й тестовый проект сделай, от биниря толку ни какого
Andrewshkovskii Дата 17.3.2009, 20:48
  нет, в зависимости от зоны нажатия..блин, это надо показывать в гифке или бинарник могу выслать..в общем зона реагирования Qdial больше, чем нужно..
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:12