MyTetra Share
Делитесь знаниями!
Окно поиска
Время создания: 20.07.2018 11:23
Раздел: Computer - Programming - Qt

find_dialog.h


#ifndef FIND_DIALOG_H

#define FIND_DIALOG_H


//#include <QMainWindow>

#include <QDialog>


class QCheckBox;

class QLabel;

class QLineEdit;

class QPushButton;


class FindDialog : public QDialog

{

Q_OBJECT


public:

FindDialog(QWidget *parent = 0);

//~FindDIalog();

signals:

void findNext(const QString &str, Qt::CaseSensitivity cs);

void findPrevious(const QString &str, Qt::CaseSensitivity cs);

private slots:

void findClicked();

void enableFindButton(const QString &text);

private:

QLabel *label;

QLineEdit *lineEdit;

QCheckBox *caseCheckBox;

QCheckBox *backwardCheckBox;

QPushButton *findButton;

QPushButton *closeButton;

};


#endif // FIND_DIALOG_H





find_dialog.c


#include "find_dialog.h"

#include <QtWidgets>


/*

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

{

}


MainWindow::~MainWindow()

{


}*/


FindDialog::FindDialog(QWidget *parent) : QDialog(parent)

{

label = new QLabel(tr("&Find:"));

lineEdit = new QLineEdit;

caseCheckBox = new QCheckBox(tr("Match &case"));

backwardCheckBox = new QCheckBox(tr("Search &backward"));

findButton = new QPushButton(tr("&Find"));

closeButton = new QPushButton(tr("Cancel"));


setWindowTitle("Find");

label->setBuddy(lineEdit); //pri hotkey 'f' aktivnym budet ne label, a lineEdit

findButton->setDefault(true); //works by Enter key

findButton->setEnabled(false); //not active state


connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableFindButton(const QString &)));

connect(findButton, SIGNAL(clicked()), this, SLOT(findClicked()));

connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));


QHBoxLayout *topLeftLayout = new QHBoxLayout;

topLeftLayout->addWidget(label);

topLeftLayout->addWidget(lineEdit);


QVBoxLayout *leftLayout = new QVBoxLayout;

leftLayout->addLayout(topLeftLayout);

leftLayout->addWidget(caseCheckBox);

leftLayout->addWidget(backwardCheckBox);


QVBoxLayout *rightLayout = new QVBoxLayout;

rightLayout->addWidget(findButton);

rightLayout->addWidget(closeButton);

rightLayout->addStretch(); //rastyajka elementov


QHBoxLayout *mainLayout = new QHBoxLayout;

mainLayout->addLayout(leftLayout);

mainLayout->addLayout(rightLayout);


setLayout(mainLayout);

setFixedHeight(sizeHint().height()); //izmenenie razmera tolko po shirine

}


void FindDialog::findClicked()

{

QString text = lineEdit->text();

Qt::CaseSensitivity cs = caseCheckBox->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive;

if(backwardCheckBox->isChecked())

{

emit findPrevious(text, cs);

}

else

{

emit findNext(text, cs);

}

}


void FindDialog::enableFindButton(const QString &text)

{

findButton->setEnabled(!text.isEmpty());

}




main.cpp


#include "find_dialog.h"

#include <QApplication>


int main(int argc, char *argv[])

{

QApplication a(argc, argv);

//MainWindow w;

FindDialog *dialog = new FindDialog;

dialog->show();


return a.exec();

}

























Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования