Я студент-программист, использующий Qt для сборки и приложения для работы, и мне трудно понять, что делать, когда пользователь выходит из диалогового окна без сохранения изменений. Диалоговое окно в первую очередь предназначено для ввода данных, поэтому возможность определить, были ли внесены изменения, а затем предложить пользователю возможность сохранить перед выходом, было бы чрезвычайно полезно. Я просмотрел документацию Qt по QDialog и ничего не нашел в отношении режима, который возвращается, если нажата кнопка выхода. Наличие средств, позволяющих просто определить, когда нажата кнопка выхода, является первоочередной задачей. Кроме того, будучи студентом-программистом, я также открыт для любых идей относительно лучших практик в отношении того, как я должен сравнивать данные до и после. Данные вводятся в таблицу, поэтому я предполагаю, что мне придется сделать что-то вроде этого
connect(some kinda exit handler, SIGNAL(clicked), this, SLOT(comparePreAndPostTable)
QVector<QString> prechanges = everything from the table
QVector<QString> postchanges = everything from table when exit is clicked
if(prechanges != postchanges)
{
Give oppertunity to save
}
Любая помощь приветствуется! Было бы здорово, если бы в Qt уже было что-то для этого!
QWidget::setWindowModified()
иQWidget::isWindowModified()
. Вы можете установить для свойства значение true всякий раз, когда пользователь что-то делает с документом, и в методе close проверить, верно ли это. Это также может поместить удобную звездочку (по крайней мере, в Windows) в строке заголовка, чтобы пользователь мог видеть, был ли документ отредактирован или нет. - person Anthony   schedule 02.05.2012