пример создания дополнительно окна Qt C++

основная тема здесь = http://fkn.ktu10.com/?q=node/2854


#include < Windows.h >
#include < QtCore\QtCore >
#include < QtGui\QtGui >


#pragma comment(lib, "QtCore4.lib")
#pragma comment(lib, "QtGui4.lib")


/* опишем класс
дополнительного окна
программы*/

class NewWindow :public QWidget
{
    public:
		QPushButton* button2;

		NewWindow(): QWidget()
		{
			      
	 /* ОЧЕНЬ ВАЖНО = чтобы виджеты отображались на дополнительном окне
	 на хранить указатели на них в виде полей данного окна (его класса)
	 как это сделано в данном примере,скажем, для кнопки  button2*/
 
			
				this->resize(400, 500);
				this->move(400, 400);
				this->setWindowTitle("дополнительное окно");
 
				 button2 = new QPushButton("HEllo WOrld =) !!!)))", this);
 
				button2->setToolTip("Это кнопка создана QT4.8.3 - на Си++ ");
				button2->resize(button2->sizeHint());
				button2->resize(150,80);

				this->show();
			//	widget.show();
		}
		
};


/* опишем класс
главного окна который наследует
функционал и свойства QMainWindow*/

class  myMainWindow:public QMainWindow

 {   Q_OBJECT


    public:
      myMainWindow (QWidget *parent = 0); // описываем конструктор
	 //родитель по-умолчанию отсутствует

	public slots:
     void openNewWindow(QWidget * parent = 0) // описываем реализацию внутри тела программы
	   {
		   someNewWindow = new NewWindow(); // Be sure to destroy you window somewhere
        //  someNewWindow->show();
		  //  mMyNewWindow->show();
		  		
	  }

    private:
		// хранит ссылку на второе(дополнительное)окно
       NewWindow *someNewWindow; 

 };

// описываем конструктор снаружи класса
myMainWindow::myMainWindow(QWidget *parent)
    : QMainWindow(parent)
{

	

	/*создаём действие используя конструктор типа
	QAction ( const QString & text, QObject * parent )
	*/
   QAction *quit2 = new QAction("&Quit", this);
   QMenu *file;
   file = menuBar()->addMenu("&File");
   // указываем одно из действий для элемента меню File
  

   QAction *newsearch = new QAction("&New search", this);
   
   file->addAction(newsearch);
   file->addAction(quit2);
   //file = menuBar()->addMenu("&File");

   /*прикрепляем сигналы к слотам - в обоих случаях мы оюидаем от пользователя 
   активизации элемента меню (triggered())  - но для действия ВЫХОД 
   мы вызываем стандартный слот выхода  =quit()
   а для действия открытия нового окна слот openNewWindow() 
   котроый мы описали в классе    myMainWindow выше*/
   connect(quit2, SIGNAL(triggered()), qApp, SLOT(quit())); // для выхода
   connect(newsearch, SIGNAL(triggered()), this, SLOT(openNewWindow())); // для доп. окна 


}



/*функция ниэе   - это просто точка входа в проргамму - 
на Qt по идее она должна выглядеть стандратно  - типа main() - 
так что данный пример не совсем корректен*/
int WINAPI WinMain(HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpcmdline,
  int ncmdshow)
{
	// блок настройки кодировки
// выбирайте кодировку в соответсвии с реальной кодировкой исходника
QTextCodec* codec = QTextCodec::codecForName("cp1251");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QApplication app2(ncmdshow, (char **)lpcmdline);
//конец блока настройки кодировки


	QApplication app(ncmdshow, (char **)lpcmdline);
	myMainWindow *window = new myMainWindow();    

	
	// блок задания содержимого основного окна
	QPushButton button2("HEllo WOrld =) !!!)))", window);
 
				button2.setToolTip("Это кнопка создана QT4.8.3 - на Си++ ");
				button2.resize(button2.sizeHint());
				button2.resize(150,80);

				button2.move(200, 300);
		
 
				QLineEdit edit("буквы сюда))",window);
			    edit.setDragEnabled(1);
				edit.move(100, 100);
// конец блока задания содержимого основного окна

     window ->resize(376, 301);	       
     window->show();
	return app.exec();
}

#include "main.moc"