Как определить doubleClick в QTableView

Я использую PyQt для создания приложения с графическим интерфейсом. В представлении, унаследованном от QTableView, необходимо обнаруживать строку, выбранную пользователем, когда он дважды щелкает строку. В таблице есть сортировка, но нет редактирования.

Как мне это сделать?

Примечание - пробовал сигнал doubleClicked (int). Он испускается кнопками мыши, а не ячейками данных, поэтому он никогда не запускался. : m возникает проблема при попытке запустить мой проект при каждой его сборке. Кажется, что инициализатор запускается, но когда дело доходит до первого запроса - он умирает со следующим InvalidOperationException .

This operation requires a connection to the 'master' database. Unable to create a
connection to the 'master' database because the original database connection has
been opened and credentials have been removed from the connection string. Supply
an unopened connection.

Для справки, я использую EF Code First CTP4, импортированный напрямую с NuGet. Подключение к SQL Server 2008 R2

Я хочу воссоздать базу данных, если есть какие-либо поправки к модели, и заполнить ее несколькими значениями для таблицы поиска. Похоже, что обе эти вещи поддерживаются * из коробки.

Моя установка выглядит так:

Global.asax

 protected void Application_Start()
 {
    Database.SetInitializer<CoreDB>(new CoreDBInitialiser());
    // et al...
 }

CoreDB.cs

public class CoreDB : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Login> Logins { get; set; }
    public DbSet<Permission> Permissions { get; set; }
    public DbSet<Role> Roles { get; set; }
    public DbSet<RolePermission> RolePermissions { get; set; }
    public DbSet<UserRole> UserRoles { get; set; }
    public DbSet<Setting> Settings { get; set; }
}

public class CoreDBInitialiser : RecreateDatabaseIfModelChanges<CoreDB>
{
    protected override void Seed(CoreDB context)
    {
        var settings = new List<Setting>
        {
            new Setting
            {
                SettingName = "ExampleSetting",
                SettingValue = "This is a sample setting value",
            }
        };

        settings.ForEach(d => context.Settings.Add(d));
    }
}

Когда он запускается, он умирает на строке, подобной этой , который, по сути, является первым запросом, который возникает после создания базы данных.

User data = (from u in _data.Users where u.Username == userName  select u).SingleOrDefault();

Я не думаю, что это так:

  • Это не разрешения : I ' ve удалил саму базу данных в SQL Server. Приложение воссоздает его примерно в то же время, когда этот запрос пытается выполнить (инициализатор установлен, тогда, очевидно, он задерживает создание, пока оно не понадобится). Я также вошел в SQL Server как пользователь, указанный в моем Web.config, и у них есть полный доступ для чтения / записи к базе данных. Фактически, им, вероятно, следует поступить так, как эта учетная запись также создает базы данных.
  • База данных создается : Удаление базы данных, и она автоматически воссоздается нормально.
  • Строка подключения определена правильно , включая атрибут providerName .

Несколько сообщений на форуме / SO действительно подразумевают, что проблема, с которой я столкнулся, в основном связана с тем, что инициализаторы не работают точно так, как планировалось, и соединение может оставаться открытым. В других случаях выходом может быть просто «не создавайте свой собственный инициализатор», что не самое лучшее решение - но, если у кого-то нет идей, мне, вероятно, придется сделать это до CTP5, возможно.

* да, я знаю, что это CTP, поэтому "поддерживается", вероятно, не совсем подходящее слово :)

28
задан Amadiere 1 December 2010 в 12:02
поделиться