we can also write the UI elements with C++ in our applications. we can follow the following steps and we can achieve the desired!!
copy the given below images in "images" folder under the assets
1) Make a new project on IDE with name HelloWorld2 remove the main.qml and update the code as given below :
a) main.cpp
#include "HelloWorld2.h"
using namespace bb::cascades;
using ::bb::cascades::Application;
Q_DECL_EXPORT int main(int argc, char **argv)
{
// Instantiate the main application constructor.
Application app(argc, argv);
// Create our application.
HelloWorld2 mainApp;
// We complete the transaction started in the main application constructor and start the
// client event loop here. When loop is exited the Application deletes the scene which
// deletes all its children (per QT rules for children).
return Application::exec();
}
copy the given below images in "images" folder under the assets
1) Make a new project on IDE with name HelloWorld2 remove the main.qml and update the code as given below :
a) main.cpp
#include "HelloWorld2.h"
using namespace bb::cascades;
using ::bb::cascades::Application;
Q_DECL_EXPORT int main(int argc, char **argv)
{
// Instantiate the main application constructor.
Application app(argc, argv);
// Create our application.
HelloWorld2 mainApp;
// We complete the transaction started in the main application constructor and start the
// client event loop here. When loop is exited the Application deletes the scene which
// deletes all its children (per QT rules for children).
return Application::exec();
}
b) HelloWorld2.h code
#ifndef HelloWorld2_H
#define HelloWorld2_H
#include <bb/cascades/Application>
using namespace bb::cascades;
namespace bb
{
    namespace cascades
    {
        class Container;
    }
}
class HelloWorld2: public QObject
{
    Q_OBJECT
public:
    HelloWorld2 ();
private:
    Container *setUpImageContainer();
    Container *setUpSliderContainer(Container *imageContainer);
};
#endif
c) HelloWorld2.cpp
// Default empty project template
#include "HelloWorld2.h"
#include <bb/cascades/Color>
#include <bb/cascades/Container>
#include <bb/cascades/DockLayout>
#include <bb/cascades/ImageView>
#include <bb/cascades/Page>
#include <bb/cascades/Slider>
#include <bb/cascades/StackLayout>
#include <bb/cascades/StackLayoutProperties>
using namespace bb::cascades;
HelloWorld2::HelloWorld2() {
 Container *contentContainer = new Container();
 contentContainer->setLayout(StackLayout::create());
 contentContainer->setTopPadding(20.0f);
 contentContainer->setBackground(Color::fromARGB(0x1E7022));
 Container *imageContainer = setUpImageContainer();
 imageContainer->setHorizontalAlignment(HorizontalAlignment::Center);
 Container *sliderContainer = setUpSliderContainer(imageContainer);
 sliderContainer->setHorizontalAlignment(HorizontalAlignment::Center);
 contentContainer->add(imageContainer);
 contentContainer->add(sliderContainer);
 Page *page = new Page();
 page->setContent(contentContainer);
 Application::instance()->setScene(page);
}
Container *HelloWorld2::setUpImageContainer() {
 Container* nightAndDayContainer = new Container();
 nightAndDayContainer->setLayout(new DockLayout());
 ImageView* night = ImageView::create("asset:///images/night.jpg");
 night->setHorizontalAlignment(HorizontalAlignment::Center);
 night->setVerticalAlignment(VerticalAlignment::Center);
 ImageView* day = ImageView::create("asset:///images/day.jpg").opacity(0);
 day->setHorizontalAlignment(HorizontalAlignment::Center);
 day->setVerticalAlignment(VerticalAlignment::Center);
 day->setObjectName("dayImage");
 nightAndDayContainer->add(night);
 nightAndDayContainer->add(day);
 return nightAndDayContainer;
}
Container *HelloWorld2::setUpSliderContainer(Container *imageContainer) {
 Container* sliderContainer =
   Container::create().left(20.0f).right(20.0f).top(25.0f).bottom(
     25.0f);
 sliderContainer->setLayout(
   StackLayout::create().orientation(LayoutOrientation::LeftToRight));
 Slider* opacitySlider = Slider::create().leftMargin(20.0f).rightMargin(
   20.0f);
 opacitySlider->setLayoutProperties(
   StackLayoutProperties::create().spaceQuota(1.0f));
 opacitySlider->setHorizontalAlignment(HorizontalAlignment::Fill);
 ImageView* moon = ImageView::create("asset:///images/moon.png");
 moon->setVerticalAlignment(VerticalAlignment::Center);
 ImageView* sun = ImageView::create("asset:///images/sun.png");
 sun->setVerticalAlignment(VerticalAlignment::Center);
 ImageView *dayImage = imageContainer->findChild<ImageView*>("dayImage");
 connect(opacitySlider, SIGNAL(immediateValueChanged(float)), dayImage,
   SLOT(setOpacity(float)));
 sliderContainer->add(moon);
 sliderContainer->add(opacitySlider);
 sliderContainer->add(sun);
 return sliderContainer;
}
Now finally after running the application you will get the output on the simulator as follows
Have a great day with BB10





 
No comments:
Post a Comment