пример создания дополнительно окна Qt C++
Primary tabs
основная тема здесь = 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"
- Log in to post comments
- 9340 reads