2015-03-06 4 views
1

Мы запускаем демоверсию Qt weatherinfo для теста. Это хорошо известная демонстрация, и вот коды.
http://qt-project.org/doc/qt-4.8/demos-embedded-weatherinfo.html
и главный источник здесь.
http://qt-project.org/doc/qt-4.8/demos-embedded-weatherinfo-weatherinfo-cpp.htmlв демоверсии Qt weatherinfo, некоторое содержимое выходит из границы окна

Когда код запущен, он выглядит хорошо и вот так. https://www.flickr.com/photos/[email protected]/16544262919/ without menu. it's ok.
Мы хотели, чтобы иметь возможность выбирать города. Поэтому, хотя мы не используем SYMBIAN, мы добавили меню городов, комментируя защитный код кода SYMBIAN в конструкторе, как показано ниже.

// #if defined(Q_OS_SYMBIAN) 
      menuBar()->addAction(action); 
// #endif 

Теперь проблема в том, что некоторые материалы выходят за пределы главного окна. Похоже, что это ниже (сверху и снизу выходит из строя).
after adding menu. scene's top and bottom hidden
Я не знаю много о Qt, как я могу это исправить?

+0

Вы решили эту проблему? Я удалил ответ, потому что я не могу запустить этот пример, и я не мог повторить проблему. Тем не менее, я надеюсь, что предыдущая должность может по крайней мере предложить вам некоторые направления. – Tay2510

+0

@ Tay2510, я пробовал то и это, используя ваши ответы, но проблема заключалась в том, что какая-то часть сцены, либо сверху, либо снизу, кажется, находится за пределами представления. Изучая его, мы с коллегой попытались использовать портретный вид (путем изменения размера главного окна) и обнаружили, что все содержимое заключено в представление. Поэтому, имея мало времени для работы над этим, мы просто выбрали портретный вид. Я добавлю окончательный код для чьей-либо информации. Но я надеюсь увидеть реальный ответ (с пейзажем). –

ответ

0

Только для информации, я установил исправления, которые мы использовали для решения проблемы.
После того как я изменил то или это, мой умный коллега предложил попробовать изменить его на портретную макет, изменив размер главных окон (так что высота> ширина). Содержание сцены, похоже, все включено в представление!
Но если у кого-то есть правильный правильный ответ (с использованием ландшафта), ответьте на мой вопрос. Благодарю.

void layoutItems() { 
     m_scene.setSceneRect(0, 0, width() - 1, height() - 1 + menuBar()->height()); 
     m_view->centerOn(width()/2, (height()-menuBar()->height())/2); 
    ... 
    } 

    void layoutItemsPortrait() { 
    ... 
      m_conditionItem->setPos(width() - cw - 20, height()/2 - ch - 20 + 30); 
    ... 
    } 
    int weatherinfo_main(int argc, char *argv[]) 
    { 
    ... 
     w.resize(380, 400); //520, 288); 
    ... 
    } 

enter image description here