Добраться до элемента класса QWidget

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 4 Sep 2009.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Столкнулся с одной проблемкой.
    Есть окно (чужое) оно имеет класс QWidget
    при этом в окне есть кнопки и различного рода контролы. Но все они принадлежат классу QWidget
    т.е. и класс QWidget и хендл одинаковые.
    И там есть одна кнопка которая находится в неактивном состоянии и необходимо сделать её активной.

    просто с QT както не работал.
     
  2. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    немного не понятен вопрос ))
    Если ты все виджеты на форме создавал руками, то в твоем классе должны быть указатели на них, или же если ты создавал форму через дизайнер то твой класс либо будет производным от класса формы либо будет содержать указатель на форму с виджетами.
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    >>>> Есть окно (чужое) оно имеет класс QWidget <<<<<
    Это совершенно левая программа(нет исходников) и я незнаю как и что там устроено. И через WinAPI или QT мне както нужно разблокировать кнопку.
     
  4. St0nX

    St0nX Elder - Старейшина

    Joined:
    19 May 2007
    Messages:
    257
    Likes Received:
    46
    Reputations:
    0
    Попробуй перебирать все элементы формы и поочередно пытаться разблокировать их. И чё то про хендлы понял. У всех кнопок 1 что ли? =\
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Если бы было так всё просто то не писалбы сюда.
    В тото и дело что вся форма - это типа литой элемент.
    Типа как в Опере поле страниц - там тоже есть разные элементы но при этом это единый компонент. Но в моём случае - вся программа единый компонент, кроме меню.
     
  6. flacs

    flacs Member

    Joined:
    28 Jan 2009
    Messages:
    81
    Likes Received:
    31
    Reputations:
    6
    slesh, помню как то столнкнулся с такой же проблемой
    Если WindowFromPoint не прокатит, то сделать уже ничего нельзя,
    не поможет не перечисление потомков окна, ни даже полный перебор всех окон (0..FFFFFFFF) ... этот элемент управления просто напросто не имеет хендла

    Эксперемнтировал в Delphi, создал панельку, а на ней SpeedButton(TSpeedButton) -> TGraficsControl

    В инете есть совет что через метод perform этого класса, позволяет отсылать сообщения ему (но это через VCL =().
     
    #6 flacs, 4 Sep 2009
    Last edited: 4 Sep 2009
  7. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    тут всё дело в том что это не VCL а QT
    WindowFromPoint выдает один и тотже хендл и класс для любого элемента формы.